0
這是關於XHR和WebMethod(asmx)的糾結羣集。該模式很簡單,我通過XHR調用Webmethod,但似乎WebMethod是同步而不是異步的。我只需要使這個轉換異步。我正在搜索和搜索(可能不擅長搜索),但無法找到任何可以解決此謎題的任何內容。如何在C#中進行異步Web服務調用?
在這裏,我如何讓通過XHR電話:
$.ajax = {
pool: [],
call: function(settings, onSuccess, onFailure) {
var xhr = new XMLHttpRequest();
xhr.open(settings.type, settings.location, settings.async);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var result = xhr.responseXML.xml.toString();
onSuccess($.Encoder.htmlDecode(result));
}
};
$.ajax.pool.push(xhr);
xhr.send(null);
return xhr;
}
}
然後:
$.ajax.call({ type: "get", location: "Index.asmx/RaiseCallbackEvent?eventArgument=ramiz.uddin" , async: true }, function(e) {}, function(e){})
的Web服務是相當簡單太:
[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true)]
public string RaiseCallbackEvent(string eventArgument)
{
// some logic
return "<say>hello</say>";
}
有些web.config文件條目允許POST,GET調用:
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
</webServices>
你能指導我爲異步做什麼嗎?
謝謝。
爲什麼不直接使用默認的jQuery AJAX在默認情況下http://docs.jquery.com/Ajax/jQuery.ajax是異步 - 它是什麼你試圖用你的方法添加? – 2009-11-16 08:32:47
這必須用.net來做一些事情來使web服務異步。不是Javascript。 JQuery很好,但我們有自己的一套客戶端庫,這是爲了一個目的,它是好的。 – 2009-11-16 09:22:24