2

这是我的代码;

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

它不接受这个。为什么不?

4

2 回答 2

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 之外总是好的。

于 2012-05-20T06:59:49.697 回答
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());

传递一个带有 id "request" 的完整表单,就像你的一样。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());
}
于 2012-05-20T07:49:57.153 回答