2012-05-20 51 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()); 
}