这是我的代码;
<script type="text/javascript">
function submitform()
{
$.post("handlers/request.php");
}
</script>
<form action="handlers/request.php" method="post" data-ajax="false" id="request">
<a href="javascript: submitform()">
<input type="hidden" name="url" value="http://google.com" />
</a>
</form>
在一个单独的PHP文件(handers / request.php)中,我有一个简单的:
$url = $_POST['url'];
这不是捡起来的。为什么不呢?
答案 0 :(得分:2)
您实际上并没有传递任何数据。
$.post("handlers/request.php", { url: $("[name='url']").val() }, function(data){
console.log( data );
});
注意第二个参数,它是一个将我们的值传递给服务器端PHP脚本的对象。 url
密钥将在服务器端变为$_POST['url']
,并将包含[name='url']
表单输入中的值。
此外,将此功能绑定到锚点击时,请避免以下情况:
<a href="javascript: submitform()">
相反,请采取以下措施:
<a class="submit" href="enablejs.html">Submit</a>
然后,在你的JavaScript中:
$(function(){
$("form#request").on("click", "a.submit", function(e){
e.preventDefault();
$.post("handlers/request.php", { url: $("[name='url']").val() }, function(data){
console.log( data );
});
});
});
将JavaScript从HTML中移除总是好的。
答案 1 :(得分:0)
在简单的层面上,您需要:
$ .post的语法如下:
jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
所以它会是:
$.post("test.php", { name: "John", time: "2pm" } );
传递简单的JavaScript变量,或者:
$.post("test.php", $("#request").serialize());
传递一个带有“请求”的整个表单,就像你的一样。
如果test.php
页面返回一些代码,则需要指定回调函数。
此外,您的HTML实现有些混乱。将隐藏输入放在A
标记中是没有意义的。尝试类似:
<form action="handlers/request.php" method="post" data-ajax="false" id="request">
<input type="hidden" name="url" value="http://google.com" />
<input type="button" onclick="submitform();" value="Submit" />
</form>
function submitform() {
$.post("handlers/request.php", $("#request").serialize());
}