javascript,php,ajax - AJAX响应始终为空

时间:2011-06-17 12:26:26

标签: php javascript ajax dns xmlhttprequest

大家好日子。我有一个流动的问题。

我有2个域名。在一个域上,我向另一个域发送ajax帖子并期待一些结果。问题是响应始终为空。如果我检查网络选项卡请求看起来没问题(发布数据很好),它没有收到任何错误,它结束(我在句柄响应函数上发出警报以检查响应是什么)。我尝试向随机域(例如example.com)发送请求,看看我是否得到任何东西。答案是一样的......没有。

这是我使用的脚本:

    function sendReqPost(url) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      //http_request.onreadystatechange = handleResponseAccept;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close"); 
      //parameters is a global variable with the post data.     
      http_request.send(parameters);
    }

我仔细检查了脚本中的所有内容...我还在请求的php页面中插入了回声,看看我是否得到了任何东西。无论我做什么,回答都是空洞的。 附:在另一个域上,ajax脚本运行正常。完全一样。

2 个答案:

答案 0 :(得分:4)

  

我有2个域名。在一个域上,我向另一个域发送一个ajax帖子并期待一些结果。

有你的问题。这是因为JavaScript中的同源策略。这就是为什么......

  

...在另一个域上,ajax脚本工作正常。

虽然有一些解决方法,称为Cross Domain Ajax

根据您的需求,由于您显然需要HTML而不是JSON,我建议使用一个小的PHP脚本来从其他域获取内容并将其转发到您的客户端。这将被称为 Ajax代理

请参阅this question

答案 1 :(得分:0)

我没有看到您的http_request.responseText,它会在请求网址中返回echo的内容。

所以尝试添加:

http_request.onreadystatechange = function () {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            alert(http_request.responseText);
        } else {
            alert("An error occurred: "+ http_request.statusText);
        }
     }
};

在:

//parameters is a global variable with the post data. 

看看它是否有效。