我的問題與描述的here非常類似。使用jquery和jsonp的ASP.NET跨域web服務調用錯誤
然而,在我的情況下,我得到500內部服務器錯誤的螢火:
請求格式是無法識別的URL在「/ HelloWorld的」意外結束。
我的asp.net 4.0 web服務調用是跨域的,並從超過十幾個其他網站的建議我相信我已經配置了一切,以便讓這種情況發生正確,但顯然我沒有。我究竟做錯了什麼?
我正在使用JSONP而不是JSON。如果所有內容都在同一臺服務器上,則Web服務按預期工作。我的問題是調用Web服務的HTML頁面的主機提供程序不允許服務器端代碼,否則我只是把所有內容放在一個地方並完成它!
下面是我的代碼/標記:
的web.config:
<?xml version="1.0"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed"></httpErrors>
<asp scriptErrorSentToBrowser="true"></asp>
<modules>
<add name="ContentTypeHttpModule"
type="ContentTypeHttpModule.ContentTypeHttpModule, ContentTypeHttpModule" />
</modules>
</system.webServer>
<system.web>
<customErrors mode="Off"></customErrors>
<compilation debug="true" targetFramework="4.0"/>
<trust level="Full"/>
<pages clientIDMode="Static"/>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<!--<httpModules>
<add name="ContentTypeHttpModule"
type="ContentTypeHttpModule.ContentTypeHttpModule, ContentTypeHttpModule" />
</httpModules>-->
</system.web>
</configuration>
HTML文件的javascript:
function test() {
$.ajax({
url: 'http://designonlinelettering.com/RenderImage.asmx/HelloWorld',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
success: function (result) {
var data = result.d;
alert(data);
},
error: function (e) {
alert('error: ' + e.d);
}
});
}
Web服務代碼:
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string HelloWorld()
{
return "Hello World";
}
的ContentTypeHttpModule代碼是從這個非常翔實blog,從中我得到了我的大部分方向的拍攝。如前所述
感謝您的幫助......
的contentType和錯誤選項JSONP請求,僅供參考 –
你所得到的錯誤是服務器端的,無關的jQuery。直接導航到'http:// designonlinelettering.com/RenderImage.asmx/HelloWorld',你會看到。 –