2013-02-11 36 views
0

我檢查了服務器端,直接使用瀏覽器GET或jquery.ajax GET來調用,它可以全部返回正確的頁面。也就是說,服務器端沒有任何問題。JavaScript XMLHttpRequest無法將參數傳輸到服務器

但是,當我嘗試使用下面的代碼來做ajax調用時,我總是得到500內部服務器錯誤。奇怪的是我檢查了控制檯日誌,似乎參數沒有成功傳輸到服務器。到達服務器時的'type'和'source'參數全爲空。

相關代碼如下。 newXMLHttpRequest()只是一種爲不同瀏覽器返回正確對象的方法,該方法已被驗證爲正確。

任何人有什麼想法出了什麼問題?

function updatePage(html){ 
    var change =html; 
    var contents = document.getElementById("contents"); 
     contents.innerHTML = change; 
} 

function submit(){ 
    var t = document.getElementById("type").value; 
    var source = document.getElementById("src").value; 

    var req = newXMLHttpRequest(); 
    req.onreadystatechange = getReadyStateHandler(req, updatePage); 
    req.open("GET", "RSSFetchServlet.do",true); 
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    req.send("type="+t+"&source="+source); 
} 
+0

你在菲德勒看到什麼? – SLaks 2013-02-11 03:55:40

+0

@SLaks只使用Chrome控制檯,所以Fiddler可以做得更好? – 2013-02-11 03:57:10

+1

你正在嘗試做一個'GET'或'POST'請求​​嗎? – Musa 2013-02-11 03:58:49

回答

0

實際的問題是隻有當你使用POST時你可以使用request.send方法來發送參數。否則,req將不會將數據封裝到URL中。

0

A 5xx error意味着有什麼問題,你的服務器端腳本,不是你的客戶端腳本。檢查語法錯誤,缺少;,可能缺少聲明。

固定500錯誤 - 一般

此錯誤只能通過修復到Web服務器軟件來解決。這不是客戶端問題。 Web服務器站點的運營商應該定位和分析日誌,以提供有關錯誤的更多信息。


嘗試在URL上附加的參數來代替。

req.open("GET", "RSSFetchServlet.do?type="+t+"&source="+source,true); 
req.send(); 
+0

不,獲得500是因爲我無法傳輸'輸入'和'源'參數到服務器。沒有任何錯誤的服務器,但阿賈克斯調用不會正確傳輸2參數... – 2013-02-11 03:43:51

+0

@YitongZhou嘗試追加你的參數在URL而不是'.send()' – Joseph 2013-02-11 03:49:31

+0

我也試過,不工作.. 。仍然500.我開始懷疑像URL編碼問題或任何其他奇怪的事情......我甚至將代碼粘貼到console.log並運行,仍然500,這意味着它不是在HTML視圖頁面的錯誤,唯一的可能的位置是這些js代碼。 – 2013-02-11 03:52:04

相關問題