Sencha Touch AJAX 调用 MVC
Posted
技术标签:
【中文标题】Sencha Touch AJAX 调用 MVC【英文标题】:Sencha Touch AJAX call to MVC 【发布时间】:2011-05-28 16:49:19 【问题描述】: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 操作的断点,并确认该操作正在返回数据,但是,alert
永远不会显示,客户端也没有任何反应。看起来由于某种原因它没有进入callback
。
我需要让这个请求与众不同吗?我正在从操作返回 Json
结果。代码如下:
return Json(retval);
其中retval
是与sencha 代码中其他地方的html 模板参数匹配的对象列表。即使那部分不匹配,我至少应该能够看到警报吧?
【问题讨论】:
【参考方案1】:你可能是在做一个跨域请求,在这种情况下,你必须使用 JSONP。
如果使用 JSONP,则无法从控制器中使用 return Json(object)
。
检查API 中的 JSONP 类。有一个 ASP.NET 的示例。 您可以在 javascriptSerializer 类中使用将对象序列化为 JSON。 (其实Json方法就是在后面使用这个类)。
这个想法是你必须返回这样的东西:
var myJson = success:true;
someRandomMethod(myJson); // someRandomMethod is the callback parameter
【讨论】:
【参考方案2】:你正在使用JSONP
,你应该使用Ext.util.JSON
JSONP 以另一种方式工作,返回 JavaScript 而不是 JSON。
【讨论】:
【参考方案3】:我不经常使用 Sencha/Ext,所以我在这里可能有点离谱,但不应该是这样:
Ext.Ajax.request(
url: '/Home/GetMessagesMobile',
params:
lat: geoip_latitude(),
lng: geoip_longitude(),
rad: 1,
sType: 0,
flow: 1,
lastId: 0,
lastRow: 0,
uniqueify: Math.random()
,
success: function(data)
console.log(data);
);
【讨论】:
以上是关于Sencha Touch AJAX 调用 MVC的主要内容,如果未能解决你的问题,请参考以下文章
Sencha touch2:Ajax Post请求成功和失败函数没有被调用?
我是不是需要在 sencha touch 应用程序中进行 ajax 调用的服务器?
如何在 Sencha Touch 2 的 Ajax 请求中捕获请求异常?