2011-05-28 95 views
1
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煎茶触摸AJAX调用MVC

我需要使这个请求不同吗?我正在返回一个Json结果。下面是代码:

return Json(retval); 

retval是在煎茶代码的其他地方匹配HTML模板参数对象的列表。即使这部分不匹配,我应该至少能看到警报的权利?

回答

2

你可能做一个跨域请求,在情况下,你必须使用JSONP。

并且使用JSONP,使控制器无法使用return Json(object)

检查API中的JSONP类。有一个ASP.NET的例子。 您可以使用JavaScriptSerializer类将对象序列化为JSON。 (实际上,Json方法是在后面使用这个类)。

的想法是,你必须回到这样的事情:

var myJson = {success:true}; 
someRandomMethod(myJson); // someRandomMethod is the callback parameter 
0

您使用JSONP,你应该以另一种方式使用Ext.util.JSON

JSONP作品,返回而不是JSON的JavaScript。

+0

我尝试了JSON以及,它仍然没有工作。 – slandau 2011-05-28 17:08:29

0

我不使用煎茶/分机了很多,所以我可能是大错特错这里,但不应该说是:

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); 
    } 
});