Adob​​e Air中的JSONP回调函数

问题描述:

我很难找出一种方法在Adobe空气中从url中获取一些数据。看起来在空中存在安全限制,因此进行正常回拨将不起作用。因此,像:Adob​​e Air中的JSONP回调函数

$.getJSON(requestURL, 
       function(json) 
      { 
       $('#response').append("working"); 
      } 
     ); 

不执行回调。有什么方法可以解决这个问题吗?我确实在http://css.dzone.com/news/jsonp-request-adobe-air找到了一些这方面的提及和一个可能的解决方案,但这似乎不适合我。我可以在普通的浏览器中运行代码,但在空气中无法调用dataFilter或成功方法。

我想通了,所以我只是发表一个答案。感谢spaz开源twitter客户端,我从中撷取了部分内容。

var xhr = $.ajax({ complete: function (xhr, rstr) 
    { 
     result = xhr.responseText; 
     cleanresult = result.substr(result.indexOf('(') + 1, result.lastIndexOf(')') - result.indexOf('(') - 1); 
     object1 = JSON.parse(cleanresult); 
    }, 
    error: function (xhr, rstr) { }, 
    success: function (data) {}, 
    beforeSend: function(xhr) {}, 
    processData: true, 
    url: requestURL, 
    type: "GET"} 
); 

这只是返回一个字符串,所以后来我用json2 library将它解析为一个对象,并且似乎工作。似乎跨域和一切工作。