通過

2009-12-21 68 views
0

當前xmlhttp的功能,我使用XMLHTTP字符串傳遞一個非常微小的int PHP文件使用GET方法處理。通過

xmlhttp=GetXmlHttpObject(); 
     if (xmlhttp==null) 
     { 
      alert ("Browser does not support HTTP Request"); 
      return; 
     } 
     var url="user_submit.php"; 
     url=url+"?vote="+value; 
     url=url+"&sid="+Math.random(); 
     xmlhttp.onreadystatechange=stateChanged; 
     xmlhttp.open("GET",url,true); 
     xmlhttp.send(null); 
     function stateChanged() 
     { 
      if (xmlhttp.readyState==4) 
      { 
      document.getElementById("captionbox").innerHTML=xmlhttp.responseText; 
      } 
     } 

現在我要處理這個Ajax請求一個comment框,我想需要一個POST調用?誰能幫我這個?

我需要通過這個Ajax請求的PHP文件處理髮送註釋框的內容,然後添加到數據庫。

回答

1

您使用send()發送POST數據這種方式。然後,你必須發出正確的頭和正確編碼數據等

話雖這麼說,它使用XmlHttpRequest是令人難以置信的繁瑣。有跨瀏覽器的問題需要考慮(例如,XmlHttpRequest不存在時的回退),並且您可以看到代碼本身很雜亂。

考慮使用JavaScript庫,例如jQuery代替,然後將它降低了代碼到:

$("#captionbox").load('user_submit.php', { 
    vote: value, 
    sid: 12345 
}); 

這也將這樣做的查詢字符串參數(和許多其他的東西)的編碼正確的開箱。

要發表評論,假設有:

<textarea id="comment"></textarea> 
<input type="button" id="send" value="Send"> 

則:

$.post("post_comment.php", { 
    comment: $("#comment").text() 
}); 

和jQuery只有19K精縮和gzip壓縮。

+0

我還同意克萊圖斯,使用圖書館,如果你不喜歡耐勞你的好醇」 AJAX功能(像我只是做了你) – 2009-12-21 01:52:37

+0

這是偉大的。你能告訴我如何接收我剛剛發送到php的數據? – amit 2009-12-21 02:11:30

+0

第一個示例顯示從PHP接收HTML並將其放入評論框中。所有的jQuery Ajax調用都會進行函數回調,您可以從服務器傳回HTML,XML或JSON數據。 – cletus 2009-12-21 02:13:44

2
... 
var url="user_submit.php", 
    data="vote="+value+"&sid="+Math.random(); 
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8"); 
xmlHttp.setRequestHeader("Content-length", data.length); 
xmlhttp.open("POST",url,true); 
... 
xmlHttp.send(data); 
... 
+0

上面的代碼在添加時引發了Firebug中的這個錯誤。未捕獲的異常:[異常... 「組件返回失敗代碼:0x80004005的(NS_ERROR_FAILURE)[nsIXMLHttpRequest.setRequestHeader]」 nsresult: 「0x80004005的(NS_ERROR_FAILURE)」 位置:「JS幀:: HTTP://本地主機/客場挑戰/ JS /腳本.js :: anonymous :: line 91「data:no] – amit 2009-12-21 20:40:32

+0

你不得不復制粘貼它,你必須改變'...'到你的代碼是什麼 – 2009-12-22 06:55:26