下午好,
我正在尝试使用jQuery访问python网络服务,并在成功事件函数中获取未定义的响应:
api request url:
var hit = 'http://<domain>/api20/account2_public/signupface?FirstName=Jeevan2&LastName=Verma2&ScreenName=mssBoi2&Email=mss.abcd@gmail.com&Password=123';
使用'dataType'进行Ajax跨域调用:'script':
$.ajax({
type: "GET",
url: hit,
dataType: "script",
cache: true,
headers: myheaders,
success: function (data){
alert(data); // here my response is undefined I need help here
},
error: function (header, status, error) {
console.log(arguments);
console.log('ajax answer post returned error ' + header + ' ' + status + ' ' + error);
},
complete: function (data) {
alert(toSource(data));
}
});
我的浏览器控制台错误,这是我要求的响应:
SyntaxError: missing ; before statement
{"Item": {"error": "Account with that e-mail already exists"}, "Sta
不理解是!!!如果我的请求成功为什么我的响应数据未定义,我使用jsonp尝试相同的脚本,并且在那里得到了parrseerror,没有调用jQuery回调,我尝试了stackoverflow的答案,在那里讨论并在花了几个小时后问这个问题,请帮助我因为我让我的成功事件运行并且需要在控制台中响应,但有线响应数据警报为“未定义”。
谢谢你
答案 0 :(得分:0)
您的dataType
设置为script
,但您看起来有JSON作为回应。如docs中所述:
“script”:将响应评估为JavaScript并将其作为plain返回 文本。通过附加查询字符串参数禁用缓存, “_ = [TIMESTAMP]”,指向URL,除非缓存选项设置为true。 注意:这会将POST转换为GET以获取远程域请求。
您应该将dataType
更改为json
:
“json”:将响应评估为JSON并返回JavaScript 宾语。 JSON数据以严格的方式解析;任何格式错误的JSON 被拒绝并抛出一个解析错误。截至jQuery 1.9,一个空的 回应也被拒绝;服务器应返回null响应 或{}代替。 (有关正确JSON的更多信息,请参阅json.org 格式化。)
您将在success
内将对象作为对象。
另请注意,您的服务会返回text/plain
格式的数据。如果您将其更改为application/json
,jQuery将“猜测”dataType
本身,您可以在$.ajax()
调用中省略它(我自己更喜欢指定dataType
)。