Sencha Touch AJAX 调用 MVC
Ext.util.JSONP.request({
url: '/Home/GetMessagesMobile',
callbackKey: 'callback',
params: {
lat: geoip_latitude(),
lng: geoip_longitude(),
rad: 1,
sType: 0,
flow: 1,
lastId: 0,
lastRow: 0,
uniqueify: Math.random()
},
callback: function (data) {
var messages = data;
alert(messages);
home.update(messages); // refresh messages
}
});
我可以调试并命中 MVC 操作的断点,并确认该操作正在返回数据,但是,警报永远不会显示,并且客户端上没有任何反应。看起来由于某种原因它没有进入回调
。
我需要改变这个请求吗?我正在从该操作返回一个 Json
结果。代码如下:
return Json(retval);
其中 retval
是与 sencha 代码中其他位置的 html 模板参数匹配的对象列表。即使该部分不匹配,我至少应该能够看到警报,对吗?
Ext.util.JSONP.request({
url: '/Home/GetMessagesMobile',
callbackKey: 'callback',
params: {
lat: geoip_latitude(),
lng: geoip_longitude(),
rad: 1,
sType: 0,
flow: 1,
lastId: 0,
lastRow: 0,
uniqueify: Math.random()
},
callback: function (data) {
var messages = data;
alert(messages);
home.update(messages); // refresh messages
}
});
I can debug and hit the breakpoint of my MVC action, and confirm that data is being returned by the action, however, the alert
never gets shown, and nothing happens on the client side. Looks like it's not entering the callback
for some reason.
Do I need to make this request different? I'm returning a Json
result from the action. Here is the code:
return Json(retval);
Where retval
is a list of objects that match the html template parameters elsewhere in the sencha code. Even if that part doesn't match though, I should at least be able to see the alert right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可能会发出跨域请求,在这种情况下,您必须使用 JSONP。
并且使用 JSONP 使得无法从控制器使用
return Json(object)
。检查 API 中的 JSONP 类。有一个 ASP.NET 的示例。
您可以在 JavaScriptSerializer 类中使用将对象序列化为 JSON。
(其实后面的Json方法就是使用这个类)。
这个想法是你必须返回这样的东西:
You are probably make a cross-domain request, in that case, you must use JSONP.
And using JSONP, makes impossible to use
return Json(object)
from the controller.Check the JSONP class in the API. There is a example for ASP.NET.
You can use in JavaScriptSerializer class to serialize an object to JSON.
(In fact, Json method is using this class in the back).
The idea is you have to return something like this:
您正在使用
JSONP
,您应该使用Ext.util.JSON
JSONP 以另一种方式工作,返回 JavaScript 而不是 JSON。
You are using
JSONP
, you should useExt.util.JSON
JSONP works in another way, returning JavaScript instead of JSON.
我不经常使用 Sencha/Ext,所以我可能会偏离基地,但不应该是这样:
I don't use Sencha/Ext a lot, so I could be way off base here, but shouldn't that be: