如何从Web服务等待响应并在Jquery中调用另一个Web服务

时间:2013-03-19 04:42:08

标签: jquery asp.net

我正在创建一个Web应用程序,我有4个Web服务。

  1. 拨打电话
  2. 获取响铃状态
  3. 已回答状态
  4. 挂断
  5. 我希望当我从jquery执行第一个web服务时,它应该等待响应,然后检查另一个Webservice并异步获取状态。

    目前我正在使用。

    function InfoByDate(){
        var divToBeWorkedOn = "#AjaxPlaceHolder";
        var webMethod = "http://MyWebService/Web.asmx/GetInfoByDates";
        var parameters = "{}";
    
        $.ajax({
            type: "POST",
            url: webMethod,
            data: parameters,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {    
                $(divToBeWorkedOn).html(msg.d);
            },
            error: function(e){
                $(divToBeWorkedOn).html("Unavailable");              
            }
        });
    }
    

    你能提出一些建议。

3 个答案:

答案 0 :(得分:1)

“我怎样才能继续检查”这个词是轮询。如果您想轮询网络服务,可以使用setInterval,如下所示。

setInterval(function() {
  //call your webservice here
}, 5000);

答案 1 :(得分:0)

在jQuery中使用以下内容

async: false,

作为

 $.ajax({
    type: "POST",
    url: webMethod,
    data: parameters,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false,
    success: function(msg) {    
        $(divToBeWorkedOn).html(msg.d);
    },
    error: function(e){
        $(divToBeWorkedOn).html("Unavailable");     
        //call you second function here
    }
});

更多细节
What does "async: false" do in jQuery.ajax()?
$.ajax( { async : false } ) request is still firing asynchronously?

答案 2 :(得分:0)

调用Web服务并在其成功处理程序内调用其他Web服务完全是一个同步调用。无论第一次服务成功与否,调用第二个Web服务都是异步调用。

 $.ajax({
    type: "POST",
    url: webMethod,
    data: parameters,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false,
    success: function(msg) {    
        $(divToBeWorkedOn).html(msg.d);
     //**call to second service**
    },
    error: function(e){
        $(divToBeWorkedOn).html("Unavailable");     
        //call you second function here
    }
});

用于同步调用集Async:false和用于所有服务调用的jquery ajax内的异步调用集Async:true