2012-05-20 44 views
2

这是我的代码;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文件(弯/ request.php)我有一个简单:

$url = $_POST['url']; 

它不捡这件事。为什么不?

回答

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

+0

当你需要传递多个变量它看起来像这样吗? $ .post(“handlers/request.php”,{url:$(“[name ='url']”)。val(),title:$(“[name ='title']”)。val() },function(data){console.log(data); –

+0

@ChrisOlson是的,你的数据对象是由键和值构成的,就像这个'{key:'value',otherKey:5}'一样。 – Sampson

0

从简单的层面,你需要:

  • 通过一些数据来Ajax页面,你的代码没有。
  • 决定您的数据通过后应该如何处理。

为$。员额的语法是这样:

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