是的,对于类似的东西有很多问题,但我无法弄清楚,抱歉。
我有一个包含一些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)中看到正确的输出,但当然在重定向到网站后,值会丢失,我将留下“测试:”
我该怎么办?
答案 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/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);