【问题标题】:Getting object Object error when Jquery callJquery调用时获取对象对象错误
【发布时间】:2014-12-11 12:08:05
【问题描述】:

我正在尝试通过 Jquery ajax 调用 api。这是我的简单 jquery 代码

    $(document).ready(function () {
    jQuery.support.cors = true;
    $.ajax({
        url: 'http://[MyServername]/api/tracking/GetLocation?DeviceId=352136061098261',
        type: 'GET',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            alert('success');
        },
        error: function (error) {
            alert('error');
        }
    });

直接移动到error函数,返回[object Object]错误。

【问题讨论】:

  • 学会使用console.log()方法,alert()不是调试工具。
  • 后端可能有错误,因为它进入了错误函数。
  • @rose 我已经通过 fiddler 检查了 url 并获得了 JSON 响应
  • This Post 可能与您的问题有关。此外,在error 函数中,您忘记了alert 中的双引号。应该是alert("error")。正如@Satpal 所指出的那样,最好使用console.log 进行调试。
  • 将您的错误处理程序更改为 error: function (jqXHR, status, error) { alert(status + ':' + error); } 第一个参数是 jqXHR 对象,这就是您获得 [object Object] 的原因...也正如其他人指出的那样使用控制台日志记录...Chrome Console , Firefox

标签: javascript jquery asp.net-mvc-4 asp.net-web-api asp.net-ajax


【解决方案1】:

要发现发生了什么,不要使用接收单个参数的函数,而是使用具有此签名的函数:

Function( jqXHR jqXHR, String textStatus, String errorThrown )

查找错误in jquery ajax docs

这将为您提供更多信息。

但是,比这更好,使用您的浏览器调试工具:按 F12 访问它。如果是 Firefox,你应该安装 Firebug。该工具允许您检查网络流量(即发送了哪个请求,获得了哪个响应)。

此外,如果您使用console.log(jqXHR, textStatus, errorThrown) 并打开控制台(按 F12),您会更清楚地看到返回的数据。如果你只是使用alert(),你看不到细节,这是一种更加突兀的调试方式(不推荐:在没有其他补救措施的情况下使用!!)。

另一种调试的好方法是使用 REST 调试工具,例如用于 Chrome 的 Postman REST client,它允许您使用不同的方法(POST、PUT、GET、DELETE...)和发送和接收与 Web API 交互以不同方式(JSON、表单编码、XML)的信息。

您还可以使用Fiddler,这是一个免费的调试工具,可以连接到浏览器来检查请求和响应。

注意:所有这些都是强大的调试工具,但如果您想获得更具体的信息,请将控制器的操作代码添加到您的问题中:路由、参数绑定、抛出的异常可能存在问题操作代码等。您的 ajax 调用是否在使用 VS 调试器的操作代码中遇到断点?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    相关资源
    最近更新 更多