我看過您提供的樣本代碼和問題是,你違反了same origin policy restriction
。您無法執行跨域AJAX調用。在您的示例中,服務託管在http://localhost:35798
上,並且網絡應用程序調用http://localhost:23590
,這是不可能的。您將不得不在同一個ASP.NET項目中同時託管服務和調用應用程序。您好像試圖在客戶端使用($.support.cors = true;
)啓用CORS,但您的服務不支持CORS。
您的調用頁面(TestHTML5.htm
)出現的另一個問題是,您已經包含jquery兩次(一次縮小和一次標準版本),並且在jquery後包含腳本(TestHTML5.js
)。你應該修復你的腳本引用。還有一個問題是以下行<script type="text/javascript"/>
,這是無效的。
<!DOCTYPE html>
<html dir="ltr" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>SignUp Form</title>
<script type="text/javascript" src="../Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../Scripts/TestHTML5.js"></script>
</head>
<body>
<button id="Send" onclick="testHTML5OnClick();">
Send Me ID!
</button>
</body>
</html>
,然後在TestHTML5.js
你也可以清潔:
所以,通過固定的標記(我爲了專注於重要部分已刪除所有你在標記有CSS噪聲)啓動一點點。例如,您的服務正在偵聽以下url模式json/{id}
並且只接受GET動詞,並且您嘗試使用不可能的POST。除此之外,您正嘗試使用對GET動詞沒有任何意義的JSON.stringify方法。您應該簡單地將id作爲您在服務中定義的url部分的一部分發送。
function testHTML5OnClick() {
var id = 5;
var url = "../RestServiceImpl.svc/json/" + id;
var type = 'GET';
callLoginService(url);
}
function callLoginService(url, type) {
$.ajax({
type: type,
url: url,
success: serviceSucceeded,
error: serviceFailed
});
}
function serviceSucceeded(result) {
alert(JSON.stringify(result));
}
function serviceFailed(result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}
您正在測試什麼瀏覽器和瀏覽器版本? JSON對象在IE7中不可用 – Tung
我正在使用IE9。在Windows 8中IE10不會發生同樣的問題。它的工作原理(沒有Json錯誤)非常好。 – nishantcop
確保您的頁面不是以怪癖模式呈現,也不是以[可壓縮模式]呈現(http://www.sevenforums.com/tutorials/1196-internet-explorer-compatibility-view-turn-off.html)。如果你想支持這些操作模式,那麼Sharrooz的建議應該起作用。看到答案[這裏](http://stackoverflow.com/questions/5339232/json-is-undefined-error-in-javascript-in-internet-explorer) – Tung