[英]Pass javascript variable to external php file
是的,对类似的东西有很多疑问,但对不起,我无法弄清楚。
我有一个包含一些javascript变量的文件,具体取决于用户输入(但无格式)以及到我的php文件的常规HTML链接。
<script>
function doStuff() {
var a = 'foo';
var b = 'bar';
window.location = 'newfile.php?a=' + a + '&b=' + b;
}
</script>
<a href="javascript:doStuff()">go to new php file</a>
效果很好,我可以使用$_GET
访问newfile.php中的数据。
newfile.php:
<?php
$a= $_GET['a'];
$b= $_GET['b'];
echo($a,$b); // works
?>
但是我想使用POST。 我想我必须为此使用ajax,但是究竟如何呢? 包括jQuery,所以我可以使用$.ajax()
任何帮助都非常感激:)
编辑:
感谢您的快速反应! JSON解析不起作用,我无法真正弄清原因-单击按钮后,浏览器窗口消失了一秒钟,而我又在同一页面上,现在无响应了:(
我使用以下代码:
jQuery.post('newfile.php',{'a': a, 'b': b}); //curious: with or without ''?
setTimeout(function () {
window.location = 'newfile.php';
}, 5000); //this will redirct to somefile.php after 5 seconds
newfile.php:
$a= $_POST['a'];
$b= $_POST['b'];
echo('Testing: '.$a);
单击后,我可以在Firebug中看到正确的输出(测试:foo),但是当然,在重定向到站点后,这些值会丢失,并且剩下“测试:”
我能做什么?
您可以使用ajax实现此目的。 以下是可用于按钮单击或锚定单击的代码。
HTML
<button type="button" id="button1">Click me </button>
阿贾克斯
$('#button1').click(function() {
var a = $('#IDofYourFormelement').val();
var b = $('#IDofYourFormSecondElement').val();
$.post('/somefile.php', {'somevariable': a, 'variableB': b}, function(data) {
var parsed = JSON.parse(data);
if (parsed == 'success') {
setTimeout(function () {
window.location = '/somefile.php';
}, 3000);//this will redirct to somefile.php after 3 seconds
}
else
{
alert ('Invalid details');
}
});
});
然后在somefile.php中,您可以按以下方式访问它
$a = $_POST['somevariable'];
$b = $_POST['variableB'];
//do some stuff and return json_encoded success/failure message
我猜您正在尝试使用javascript发布变量,并显示执行发布变量的页面发布。 在这里找到了类似的问题和答案-JavaScript帖子请求(如表单提交) 。
编辑
window.location
将调用您页面的另一个实例,然后将分配或替换当前文档,因此您以前的post参数将丢失。 如果您希望传递带有post参数的页面,则需要使用method=POST
以及post参数将表单提交到php页面。 这就是我共享的上述stackoverflow链接中写的内容。
您可以将新功能与HTML5 FormData()一起使用; 来自https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Objects的代码段,另请参见https://developer.mozilla.org/en/docs/Web/API/FormData和http:// caniuse.com/#feat=xhr2用于浏览器支持
var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456); // number 123456 is immediately converted to string "123456"
var request = new XMLHttpRequest();
request.open("POST", "http://foo.com/submitform.php");
request.send(formData);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.