我收到的data=[object object]有问题,它是如何工作的?实际上,我发送了一个post请求,我需要获得浏览器中的代码页,你可以在调试器中看到它,但我无法通过编程获得它。
这是代码
$.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:function,setRequestHeader:function,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>
等等
此页面是读取所必需的
我认为您的问题将通过使用以下中的任何一个来解决
尝试console.log(data.toSource());
或alert(JSON.stringify(data));
您将complete
选项用于$.ajax
而不是success
。
给complete
(您命名为data
(的第一个参数实际上是jqXHR
对象。这就是您在所展示的各种形式的日志中看到的,并且是而不是您想要的。([Object object]
是对象的.toString()
的输出(。
此外,complete
方法在所有$.ajax
功能和事件之后运行,而不管它发出的HTTP请求的状态如何。在这种情况下,不会向它传递响应数据,因为它可能是在向服务器发出错误请求后运行的,而这不会产生任何数据。
切换到success
选项(在$.ajax
文档页面上找到并阅读(。这只在成功的请求中运行,并且它给出的第一个参数是来自服务器的数据。
切换到success
后,您需要确定您的请求是否真的到达了服务器,并且数据是否被返回。您还需要确定您期望从服务器返回的数据类型(HTML、XML、JSON、纯文本等(,并适当地设置dataType
(同样,在继续操作之前阅读文档(。
附录
HTTP请求可能失败,导致success
未被调用的一个原因是同源策略。您只能从与脚本运行位置不同的域请求脚本或jsonp。当你告诉jQuery这是一个脚本时,它会尝试为你把它放在你的页面中——因为你请求的不是脚本,所以它不能这样做。如果您告诉它"jsonp",那么远端必须支持该协议,并在函数调用中返回一个包含JSON的脚本。显然远端不支持它,只发送回HTML。
您实际上是在请求HTML,但甚至可以使用纯文本。不幸的是,同源策略不允许这样做。