我嘗試使用JSON來調用Web服務調用Web服務,當我打電話給網絡服務沒有例外的參數,它的工作,但 當我嘗試發送參數,香港專業教育學院得到了一個錯誤:使用JavaScript錯誤
這是我的代碼:
function GetSynchronousJSONResponse(url, postData)
{
var xmlhttp = null;
if (window.XMLHttpRequest)
xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject) {
if (new ActiveXObject("Microsoft.XMLHTTP"))
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
else
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
url = url + "?rnd=" + Math.random(); // to be ensure non-cached version
xmlhttp.open("POST", url, false);
xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xmlhttp.send(postData);
var responseText = xmlhttp.responseText;
return responseText;
}
function Test()
{
var result = GetSynchronousJSONResponse('http://localhost:1517/Mysite/Myservice.asmx/myProc', '{"MyParam":"' + 'test' + '"}');
result = eval('(' + result + ')');
alert(result.d);
}
這是錯誤:
System.InvalidOperationException:請求格式是無效的:應用程序/ JSON的;字符集= UTF-8。
在System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
在System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest
有什麼不對?
在此先感謝。
該行'url = url +「?rnd =」+ Math.random();'不必要,'POST'請求永遠不會被緩存。 –
@Andy E:'POST'請求從不緩存**,標準**,我們都知道一些用戶代理對標準的關注度很低。我不會說出任何名字(幸運的是,這個問題通常不會被這個問題困擾)。 –
@Andrew Moore:我必須說我不知道任何,但是我再次只使用Chrome和IE。在'POST'請求被緩存的情況下,時間戳可以在'POST'數據中設置,或者可以設置更合適的'if-modified-since'請求頭。 –