編輯工作:起初我以爲是不工作跨域可言,現在我意識到它只能在IEJSONP跨域只能在IE
工作我使用jQuery來調用Web服務(ASP.NET .axmx
),並試圖給我們jsonp
,以便我可以在不同的網站上調用它。目前它只能在IE中使用,但不能在Firefox,Chrome,Safari中使用。此外,在IE瀏覽器中,彈出一個對話框警告:「此頁正在訪問不受其控制的信息...」 任何想法?
下面是代碼:
$.ajax({
type: "POST",
url: "http://test/TestService.asmx/HelloWorld?jsonp=?",
dataType: "jsonp",
success: function(data) {
alert(data.prop1);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status + " " + textStatus + " " + errorThrown);
}
});
而且服務器代碼:
[ScriptService]
public class TestService : System.Web.Services.WebService{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void HelloWorld() {
string jsoncallback = HttpContext.Current.Request["jsonp"];
var response = string.Format("{0}({1});", jsoncallback, @"{'prop1' : '" + DateTime.Now.ToString() + "'}");
HttpContext.Current.Response.Write(response);
}
}
,你能告訴我如何你從jQuery側進行調用(我想你是如何注入相應的腳本元素)? – 2010-04-28 15:31:39
這可能是一個紅鯡魚,給所有其他事情發生,但爲什麼你指定POST而不是GET? – 2010-04-29 10:44:50
@馬特吉布森...那有效!如果你想把它寫成答案,我會接受它。爲什麼這很重要? – iboeno 2010-04-29 20:48:10