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

时间:2015-06-06 05:55:35

标签: javascript php ajax

是的,对于类似的东西有很多问题,但我无法弄清楚,抱歉。

我有一个包含一些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)中看到正确的输出,但当然在重定向到网站后,值会丢失,我将留下“测试:”

我该怎么办?

3 个答案:

答案 0 :(得分:1)

您可以使用ajax来实现此目的。以下是按钮单击或锚点击的代码。

HTML

<button type="button" id="button1">Click me </button>

的Ajax

$('#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

答案 1 :(得分:0)

我猜你试图使用javascript发布变量并显示执行你的帖子变量的页面帖子。在这里找到了类似的问题和答案 - JavaScript post request like a form submit

修改

while ($row = mysql_fetch_array($query)) { echo "<tr>"; echo "<td>".$row['AuftragsID']."</td>"; echo "<td>".$row['Startort']."</td>"; echo "<td>".$row['Zielort']."</td>"; echo "<td>".$row['Gewicht']."</td>"; echo "<td>".$row['Fracht']."</td>"; echo "</tr>"; } 将调用您页面的另一个实例,然后将分配或替换当前文档,因此您之前的帖子参数将丢失。如果你想要传递你的帖子参数的页面,你需要使用window.location和你的帖子参数一起提交到你的php页面。这就是我共享的上述stackoverflow链接中所写的内容。

答案 2 :(得分:0)

你可以使用new与HTML5 FormData(); 来自https://developer.mozilla.org/en-US/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);