Ruby on rails 对于某些远程URL,JQuery AJAX响应为200,但没有响应数据

Ruby on rails 对于某些远程URL,JQuery AJAX响应为200,但没有响应数据,ruby-on-rails,json,jquery,cross-domain,Ruby On Rails,Json,Jquery,Cross Domain,在堆栈溢出方面有几个问题,即由于安全原因,跨域AJAX请求等将无法工作。像这样的一些问题。(如果我错了,请告诉我。) 这是非常好的工作: $(document).ready(function() { $.getJSON("http://search.twitter.com/search.json?q=test&callback=?", function(data) { alert("test alert outside loop");

在堆栈溢出方面有几个问题,即由于安全原因,跨域AJAX请求等将无法工作。像这样的一些问题。(如果我错了,请告诉我。)

这是非常好的工作:

$(document).ready(function() { 
  $.getJSON("http://search.twitter.com/search.json?q=test&callback=?", function(data) {
    alert("test alert outside loop");
    $.each(data.results, function() {
      alert("test alert inside loop");
    });
  });
});
但是仅仅用我的应用程序替换URL是行不通的。在这种情况下,响应代码是
200
,但没有响应数据。我的申请受到了冲击;我可以在控制台中看到这一点

$(document).ready(function() { 
  $.getJSON("http://192.168.1.2:3000/cities.json?callback=?", function(data) {
    alert("test alert outside loop");
    $.each(data.results, function() {
      alert("test alert inside loop");
    });
  });
});
我正在使用PhoneGap开发一个非常简单的移动应用程序,所以我需要使用JavaScript打这个电话。但让我困惑的主要问题是,为什么Twitter呼叫能正常工作,而对我的应用程序的呼叫却不能。我还尝试在Rails应用程序中删除我的应用程序控制器中的
protect\u from\u forgery
调用,但我认为这并不重要

编辑

我已经在上部署了应用程序,现在请检查它。。。它不起作用

你可以试试。这两个环节
可能
数据。即使
数据
存在,结果也不存在。如果你
警报(数据),你会得到什么(或
console.log(数据);
)在循环之外

编辑


你的应用程序未生成回调包装。例如,应该以相同的方式生成包装在函数调用中的JSON对象,例如,twitter响应:.

可能
数据。结果不存在,即使
数据不存在。如果你
警报(数据),你会得到什么(或
console.log(数据);
)在循环之外

编辑


你的应用程序未生成回调包装。例如,应该以相同的方式生成一个包装在函数调用
abc
中的JSON对象,例如,twitter的响应是:。

由于
同源策略,您遇到了跨域问题
您试图从中获取json的ip应该位于发起请求的同一台服务器上

试用

 $.getJSON("192.168.1.2/cities.json?callback=?", func

由于
同源策略
您试图从中获取json的ip应位于发起请求的同一服务器上,因此您遇到了跨域问题

试用

 $.getJSON("192.168.1.2/cities.json?callback=?", func

问题是这个远程服务器返回的是JSON,而不是JSONP。它返回:

{"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]}
而不是:

someCallbackName({"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]})

这就是为什么我不能使用AJAX使用远程域,除非这个远程资源支持JSONP。

问题是这个远程服务器返回JSON,而不是JSONP。它返回:

{"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]}
而不是:

someCallbackName({"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]})


这就是为什么我不能使用AJAX使用远程域,除非这个远程资源支持JSONP。

从哪里调用这些函数?服务器,还是您的本地计算机?是
http://192.168.1.2
运行脚本的计算机的IP地址?@Alex我已经在上部署了应用程序,现在检查一下。。。它不起作用。。。看起来您是从服务器返回JSON,而不是JSONP。您从哪里调用这些函数?服务器,还是您的本地计算机?是
http://192.168.1.2
运行脚本的计算机的IP地址?@Alex我已经在上部署了应用程序,现在检查一下。。。它不起作用。。。看起来您是从服务器返回JSON,而不是JSONP.Ah。如果将裸url(ie)放入浏览器,会发生什么。回答是什么?看看这个。。它返回一个json响应@graphic,我已经在上面部署了应用,现在检查一下。。。它不起作用了……我不明白你的意思。你能解释一下我该怎么办吗。。LWell,如果JSON响应没有生成回调,可能只是调用
cities.JSON
(没有
?回调=?
修饰符)就足够了。如果将裸url(ie)放入浏览器,会发生什么。回答是什么?看看这个。。它返回一个json响应@graphic,我已经在上面部署了应用,现在检查一下。。。它不起作用了……我不明白你的意思。你能解释一下我该怎么办吗。。LWell,如果JSON响应没有生成回调,可能只是调用
cities.JSON
(没有
?callback=?
修饰符)就足够了。我现在已经部署了应用程序,请检查它。。。它不工作..接收到json。。。没有调用成功处理程序?那么解决方案是什么。。我正在使用phonegap,所以我需要在javascript中执行此操作…我已经在上部署了应用程序,请检查它。。。它不工作..接收到json。。。没有调用成功处理程序?那么解决方案是什么。。我正在使用phonegap,所以我需要在javascript中执行此操作。。。