如何从jQuery.get请求获得回复

时间:2010-06-03 01:20:55

标签: jquery ajax get

我有一个使用以下内容提交AJAX请求的页面:

function oc()
{
  jQuery.get(
    "http://somewhere.com:5001/ajax/options/",
    jQuery('#selectform').serialize(),
    function(data,statusm,xml){
      // I got nothing!!!
      return;
    }
  );
}

如果我从地址栏发出请求手册,那就行了。当我从JS发出请求时,我可以通过日志记录看到服务器端正常工作,但在回调中,我似乎无法获得回复的内容。

我出错了什么?

2 个答案:

答案 0 :(得分:3)

您可能会看到的是same-origin policy。这是一个浏览器安全功能,可以防止跨站点脚本攻击,甚至可以访问不同端口上的相同域/主机 被视为处于“不同领域”。 example table on Wikipedia可以很好地显示/不允许的内容。

您还可以使用Chrome中的--disable-web-security命令行开关对此进行测试,然后您的脚本应该正常运行......这不是解决方案,只是帮助确认问题。

简而言之,您需要向同一个域或主机和端口发出请求,否则它将被阻止。此规则的例外是使用JSONP,它主要用于此目的。你可以找到一些不错的例子herehere

答案 1 :(得分:1)

尝试使用$ .ajax的错误函数。

$.ajax({
  url: "http://somewhere.com:5001/ajax/options/",
  data: jQuery('#selectform').serialize(),
  success: function(data,statusm,xml){
  // I got nothing!!!
  return;
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    // do something
  }
});