调用JQuery Ajax取得了成功,但数据未定义

时间:2015-09-16 01:04:03

标签: jquery wcf

目前,我正在使用 JQuery Ajax 命令来调用名为isValidUser的 WCF服务。使用chrome进行调试,我可以看到WCF服务正在发送看似正确的JSON响应。 JQuery 中定义的成功回调方法也会被调用。但是,警报消息正在输出“未定义”。

以下是我使用的客户端脚本的片段。

$.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    url: 'http://localhost:28506/VikingServices.svc/isValidUser/john/doe',
    processData: false,
    dataType: "jsonp",
    jsonpCallback: "callback",
    success: callback,
    error: ServiceFailed
});
function callback(data) {
    alert(data);
}
function ServiceFailed(xhr) {
    alert(xhr.responseText);
    if (xhr.responseText) {
        var err = xhr.responseText;
        if (err)
            error(err);
        else
            error({ Message: "Unknown server error." })
    }
    return;
}

这是我在来自Ajax请求的Chrome开发者工具响应中看到的响应:

{"Name":"Super Admin","Username":"john","id":1}
  1. 我有什么理由可以在 Chrome开发工具中看到正确的回复,但是在JQuery的成功回调中没有获得任何信息?这是一个JQuery错误吗?
  2. 我可以从JQuery获得任何其他信息或我可以格式化数据变量的其他方式吗?它似乎应该只是输出我在 Chrome开发工具中看到的JSON对象。
  3. 我在 Chrome开发工具中收到的JSON对象是否有任何简单的格式问题?

1 个答案:

答案 0 :(得分:2)

您的数据类型为'jsonp',因此您的响应必须是有效的jsonp响应。像

这样的东西
callback({"Name":"Super Admin","Username":"john","id":1});

应该有效。还有一个验证器:http://json-p.org/validator.html