0

我正在使用 jquery 进行 ajax 调用:

    // omitting the code for the options properties

    var options = {
        type: Type,
        url: Url,
        data: '{aString:"abc"}',
        contentType: ContentType,
        dataType: dataType,
        //processdata: ProcessData,
        success: function (msg) {
            ServiceSucceeded(msg);
        },
        error: ServiceFailed

    };
    function ServiceFailed(result) {
        alert('Service call failed: ' + result.status + '' + result.statusText);
    }

    $.ajax(options).done(function () {
      alert("success: " + msg);
    });

此调用的工作原理是调用 options 中定义的 url。端点是我托管的 wcf 服务,因此我已验证它是否按预期调用。

我用 fiddler 监控通话,我发现请求或响应没有任何问题。http 响应代码为 200 OK。

但是没有调用 done 中的函数。而是运行 ServiceFailed。为什么是这样?为什么没有调用 done(),为什么 jquery consi

4

3 回答 3

3

我们只能根据您发布的内容进行猜测。

您正在dataType为 jQuery 指定 a (但没​​有告诉我们该数据类型是什么),这意味着您(可能)告诉它转换结果。例如,如果您的dataType变量是“json”,jQuery 将尝试将结果转换为 JSON;如果是“xml”,jQuery 会尝试将结果转换为 XML。

如果您正在观看呼叫发生并看到带有内容的 200 响应,这向我表明这是数据转换失败。

您可以很容易地找到有关错误发生原因的更多信息。使用此签名调用该error函数:

function error(jqXHR, textStatus, errorThrown)

...因此您可以在其中放置一个断点并检查textStatus(根据您对结果的监控,它应该是 200,但如果它不是有用的信息)和errorThrown,这可能会让您知道出了什么问题。

于 2012-11-26T09:00:36.660 回答
0

如果您的 Url 是远程的,那么您将需要使用 JSONP,这需要您将查询字符串添加到 Url?callback?

jQuery ajax 在本地文件上工作但不能从远程 url 工作?

于 2012-11-26T09:03:40.343 回答
0

你没有指定数据类型……关于服务器响应的期望……jQuery处理响应数据并将其作为第一个参数传递给你的成功回调函数(如果提供)。您可以在传递给 $.ajax 的唯一参数中将 dataType 指定为键/值对。支持的类型有:

"xml": Treat the response as an XML document that can be processed via jQuery.
"html": Treat the response as HTML (plain text); included script tags are evaluated.
"script": Evaluates the response as JavaScript and evaluates it.
"json": Evaluates the response as JSON and sends a JavaScript Object to the success callback.

看看这个页面

http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

于 2012-11-26T09:04:34.317 回答