【发布时间】:2013-07-20 17:31:55
【问题描述】:
我试图从对Ext.data.JsonP.request 的响应中获取布尔值(成功)和 HTML 字符串(结果),但我不知道如何。这是我到目前为止的代码:
Ext.data.JsonP.request({
url: 'http://wereani.ml/shorten-app.php',
callbackKey: 'callback',
params: {
data: Ext.encode(values)
},
success: function(response) {
console.log(response);
console.log(JSON.stringify(values));
console.log('Link Shortened');
if(response.responseText['success'] == true) {
Ext.Msg.alert('Link Shortened', response.responseText, Ext.emptyFn);
} else {
Ext.Msg.alert('Error', response.responseText, Ext.emptyFn);
}
form.reset();
},
failure: function(response) {
console.log(response);
console.log(JSON.stringify(values));
console.log('Error');
Ext.Msg.alert('Error', 'Please try again.', Ext.emptyFn);
}
});
一些示例 JSON-P:
callback({"success":false,"result":"<div class=\"error\">Please enter a valid link to shorten!<\/div>"})
我目前遇到的错误是Uncaught TypeError: Cannot read property 'success' of undefined。
提前感谢您的帮助!
编辑:似乎response 是Object {success: false, result: "<div class="error">Please enter a valid link to shorten!</div>"},response.responseText 是undefined。我使用了错误的变量吗?我在 response 上找不到任何文档。
编辑 2:Console.log(response.responseText) 返回 undefined 的原因似乎是因为它.... 是。我传递的 JsonP 编码变量(success 和 result)被自动解析到对象中,并且从未创建过 response.responseText(尽管我认为它应该是)。解决方案是直接阅读response.success 和response.result!
回答:这是有效的代码。感谢 Viswa 的帮助!
Ext.data.JsonP.request({
url: 'http://wereani.ml/shorten-app.php',
callbackKey: 'callback',
params: {
data: Ext.encode(values)
},
success: function(response) {
if(response.success === true) {
Ext.Msg.alert('Link Shortened', response.result, Ext.emptyFn);
} else {
Ext.Msg.alert('Error', response.result, Ext.emptyFn);
}
form.reset();
},
failure: function(response) {
console.log('Error');
Ext.Msg.alert('Error', '<div class="error">Please try again.</div>', Ext.emptyFn);
}
});
【问题讨论】:
标签: html sencha-touch sencha-touch-2 jsonp sencha-architect