jQuery .post帖子元素

时间:2012-05-20 06:57:38

标签: php jquery .post

这是我的代码;

<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'];

这不是捡起来的。为什么不呢?

2 个答案:

答案 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)

在简单的层面上,您需要:

  • 将一些数据传递给您的代码没有的Ajax页面。
  • 决定在您的数据通过后该怎么做。

$ .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());
}