繁体   English   中英

将javascript变量传递给外部php文件

[英]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/FormDatahttp:// 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM