C# .JQuery.ajax如何使用返回值调用WCF方法?

C# .JQuery.ajax如何使用返回值调用WCF方法?,c#,javascript,jquery,ajax,wcf,C#,Javascript,Jquery,Ajax,Wcf,我已经能够使用.ajax调用WCF方法。如何调用返回值的方法?我需要调用这个方法来查看数据是否准备好,如果没有,请等待一秒钟。WCF方法是: [OperationContract] [WebGet] public bool IsDataReady(string requestGUID) { if (Global.publicDataDictionary.Keys.Contains(requestGUID))

我已经能够使用.ajax调用WCF方法。如何调用返回值的方法?我需要调用这个方法来查看数据是否准备好,如果没有,请等待一秒钟。WCF方法是:

 [OperationContract]
        [WebGet]
        public bool IsDataReady(string requestGUID)
        {
            if (Global.publicDataDictionary.Keys.Contains(requestGUID))
                return true;
            else return false;
        }
到目前为止,我的JavaScript是:

$(document).ready(function() {
            var input = {requestGUID:"<%=guid %>"};
            console.log(input);

            $.ajax({
                url: "http://www.blah.com/services/TestsService.svc/IsDataReady",
                type: "GET",
                contentType: "application/json; charset=utf-8",
                data: input,
                dataType: "json",
                success: function(data) {

                }
            });

返回值将包含在ajax调用中传递给成功回调设置的数据参数中

您需要在这里检查该值,如果为false,则设置一个超时,该超时将在到期时再次尝试ajax调用

最好将Ajax调用封装在一个函数中,当超时过期时,可以以递归方式调用该函数。e、 g

    function CallIsDataReady(input){
        $.ajax({
            url: "http://www.blah.com/services/TestsService.svc/IsDataReady",
            type: "GET",
            contentType: "application/json; charset=utf-8",
            data: input,
            dataType: "json",
            success: function(data) {
                if (!data){
                    setTimeout(function(){CallIsDataReady(input);}, 1000);
                }
                else{
                  //Continue as data is ready
                }
            }
        });
    }
    $(document).ready(function() {
        var input = {requestGUID:"<%=guid %>"};
        console.log(input);

        CallIsDataReady(input);
    });
函数CallIsDataReady(输入){
$.ajax({
url:“http://www.blah.com/services/TestsService.svc/IsDataReady",
键入:“获取”,
contentType:“应用程序/json;字符集=utf-8”,
数据:输入,
数据类型:“json”,
成功:功能(数据){
如果(!数据){
setTimeout(函数(){CallIsDataReady(输入);},1000);
}
否则{
//数据准备就绪后继续
}
}
});
}
$(文档).ready(函数(){
var输入={requestGUID::};
控制台日志(输入);
CallIsDataReady(输入);
});

当您在此页面上查看源代码时:

var input = {requestGUID:"<%=guid %>"};
阅读RESTful web服务:

你成功了吗??我无法让它工作。我想这是我的第二个.ajax调用,重复相同名称的参数。我将更新我的问题我将它分解成一个函数来进行第二次AJAX调用,并进行了更改,但仍然不起作用。我来编辑,知道为什么吗?你调试过吗?代码不是本地的,而是在服务器上,所以我无法调试它。但我确实使用了IE开发工具并在callUpdateGrid上设置了断点,但我无法命中它。我的日志显示,第二个函数和第二个AJAX调用从未获得requestGUID值。我不能用相同的输入值调用第二个函数吗?我看到我的IsDataReady返回看起来是XML的内容,即使该服务是JSON服务,并且为JSON模式设置了.ajax调用。microsoft.com/2003/10/Serialization/“>true
    function CallIsDataReady(input){
        $.ajax({
            url: "http://www.blah.com/services/TestsService.svc/IsDataReady",
            type: "GET",
            contentType: "application/json; charset=utf-8",
            data: input,
            dataType: "json",
            success: function(data) {
                if (!data){
                    setTimeout(function(){CallIsDataReady(input);}, 1000);
                }
                else{
                  //Continue as data is ready
                }
            }
        });
    }
    $(document).ready(function() {
        var input = {requestGUID:"<%=guid %>"};
        console.log(input);

        CallIsDataReady(input);
    });
var input = {requestGUID:"<%=guid %>"};
[WebGet(
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json]