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

如何从jQuery.get请求获取回复,jquery,ajax,get,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; } ); } 如果我从地址栏中输入请求手册,事情就会正常进行。当我

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

function oc()
{
  jQuery.get(
    "http://somewhere.com:5001/ajax/options/",
    jQuery('#selectform').serialize(),
    function(data,statusm,xml){
      // I got nothing!!!
      return;
    }
  );
}
如果我从地址栏中输入请求手册,事情就会正常进行。当我从JS发出请求时,我可以通过日志看到服务器端工作正常,但在回调中,我似乎无法获得回复的内容


我做错了什么?

你可能看到的是踢进。这是一种浏览器安全功能,用于防止跨站点脚本攻击,即使在不同端口上访问相同的域/主机,也被视为在“不同的域”上。在展示什么是允许的/不允许的方面做得很好

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


简而言之,您需要向相同的域或主机和端口发出请求,否则它将被阻止。此规则的例外情况是使用,它主要用于此目的。你可以找到一些像样的例子,你可能看到的是踢腿。这是一种浏览器安全功能,用于防止跨站点脚本攻击,即使在不同端口上访问相同的域/主机,也被视为在“不同的域”上。在展示什么是允许的/不允许的方面做得很好

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


简而言之,您需要向相同的域或主机和端口发出请求,否则它将被阻止。此规则的例外情况是使用,它主要用于此目的。您可以找到一些不错的示例,并尝试在$.ajax中使用error函数

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

尝试在$.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
  }
});

@Matthew-你会在同一版本中看到这种行为,它不是为了保护服务器,而是为了保护客户端,即阻止响应。@Matthew-我只是在这里运行了一个测试来确认(这在Chrome 6中),服务器确实被击中,数据响应为空,即使服务器确实发送了响应…这是阻止响应的策略。我之前的评论是准确的,至少在Firefox/Chrome和IE中是这样。@BCS-这有什么原因必须在不同的端口上吗?:)@BCS-页面从哪个URL运行?只是
localhost/
,例如端口80?@BCS-啊,是的,这是一个问题,是您专门运行的,还是一个通用的客户端文件,还是…@Matthew-您会在同一个原始问题中看到这种行为,它不是用来保护服务器的,它是用来保护客户端的,也就是说,阻止响应。@Matthew-我刚刚在这里运行了一个测试来确认(这是在Chrome 6中),服务器确实被击中,数据响应为空,即使服务器确实发送了响应……这是阻止它的策略。我之前的评论是准确的,至少在Firefox/Chrome和IE中是这样。@BCS-这有什么原因必须在不同的端口上吗?:)@BCS-页面从哪个URL运行?只是
localhost/
,例如端口80?@BCS-啊,是的,这会是个问题,是您专门运行的,还是通用的客户端文件,还是。。。。?