【问题标题】:how to work with the received data = [object Object]?如何处理接收到的数据 = [object Object]?
【发布时间】:2014-07-04 05:45:21
【问题描述】:

收到的数据 = [object Object] 有问题,它是如何工作的? 实际上我发送了一个发布请求,我需要获取将进入浏览器的代码页,您可以在它进入的调试器中看到它,但我无法以编程方式获取它。

这里是代码

$.ajax ({
    url: "https://ua-eshop.oriflame.com/iframe/Consultant/OnlineQuickRegistration.aspx",
    dataType: 'script',
    crossDomain: true,
    type: 'POST',
    data: date,
    async: true,
    complete: function (data, textStatus, jqxhr) {
        var text = data;
        console.log (JSON.stringify (data));

        console.log (data.toString ());

        console.log (data);
    }
});

从控制台输出

{"readyState": 4 , "status": 200 , "statusText": "success"}

[对象对象]

对象 {readyState: 4 , getResponseHeader: 函数, getAllResponseHeaders:函数,setRequestHeader:函数, overrideMimeType: 函数 ...

有很多功能}

这是服务器返回的内容:

<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Transitional / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="ctl00_pageHead"> <title>
Online quick registration
</ title>

等等

此页必读

【问题讨论】:

  • 您需要打印状态文本吗??
  • 我需要获取页面
  • 为什么将dataType 设置为script
  • dataType 设置为text 可能会解决您的问题。
  • 只有jsonp或者脚本才能将结果返回给浏览器

标签: jquery ajax


【解决方案1】:

你的问题可以通过使用其中任何一种来解决

试试console.log(data.toSource());

alert(JSON.stringify(data));

【讨论】:

  • console.log(data.toSource()); - 错误未定义不是函数警报(JSON.stringify(数据)); => {"readyState":4,"status":200,"statusText":"success"}
【解决方案2】:

您正在为$.ajax 使用complete 选项,而不是success

complete(你命名为data)的第一个参数实际上是jqXHR 对象。这就是您在所展示的各种形式的日志记录中所看到的,并且不是您想要的。 ([Object object] 是对象的 .toString() 的输出)。

此外,complete 方法在所有$.ajax 功能和事件之后运行,无论它发出的 HTTP 请求的状态如何。在这种情况下,没有响应数据被传递给它,因为它可能在向服务器发出错误请求后运行,这不会导致任何数据。

切换到success 选项(找到它并在$.ajax docs page 上阅读它)。这仅针对成功的请求运行,并且它给出的第一个参数是来自服务器的数据。

切换到success 后,您需要确定您的请求是否真正发送到服务器并且是否正在返回数据。您还需要确定您期望从服务器返回的数据类型(HTML、XML、JSON、纯文本等)并适当地设置dataType(再次,在继续之前阅读docs)。

附录

您的 HTTP 请求可能失败(导致 success 未被调用)的一个原因是 Same-origin policy。您只能从与您的脚本运行位置不同的域请求脚本或 jsonp。当您告诉 jQuery 它是一个脚本时,它会尝试将它放入您的页面中——因为您请求的不是脚本,所以它不能这样做。如果您告诉它“jsonp”,则远端必须支持该协议并发送回一个脚本,其中 JSON 包装在函数调用中。显然远端不支持,只发回HTML。

您实际上是在请求 HTML,但甚至可以使用纯文本。不幸的是,同源政策不允许这样做。

【讨论】:

  • result html页面,不知道是什么类型的数据,只有类型是jsonp或者script的时候才结果,如果成功不改变结果
  • 请参阅我的答案附录。您遇到的问题比您想象的要大。
  • 我通过php脚本决定,但想通过jquery解决
猜你喜欢
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 2020-07-14
  • 2016-01-13
相关资源
最近更新 更多