XMLHttpRequest没有返回值

时间:2014-08-24 23:42:01

标签: javascript php xmlhttprequest

我无法收到来自php文件的回复。

的Javascript

var http = new XMLHttpRequest();
var url = "http://localhost/php_bollywood_romance.php";
var params = "film="+movie_name_entered;
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(params);

我甚至试图这样做.....

 var http = new XMLHttpRequest();
 if ("withCredentials" in http)
 {
    var url = "http://localhost/php_bollywood_romance.php";
var movie_name_entered="hi";
var params = "film="+movie_name_entered;
http.open("POST", url, true);
 }
 else if (typeof XDomainRequest != "undefined"){
    http = new XDomainRequest();
    var url = "http://localhost/php_bollywood_romance.php";
    var movie_name_entered="hi";
    var params = "film="+movie_name_entered;
    http.open("POST", url);
} else {
    http = null;
}
if (http){
http.onload = function(){
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        document.write(http.responseText);
        callback(http.responseText);
        alert("hey");
    }
}
http.send(params);
};

PHP

  <?php
    {
     $name = $_POST["film"];
      $file ='data_bollywood_romance.txt';
       $current=file_get_contents($file); //gets existing content from the file
    $current ="$current \n $name \n";
   file_put_contents($file,$current); //put newstuff
    echo 'hi';
   return 'yes';
     }
   ?>

然而,这似乎也不起作用......如果我在http.send(params)之后发出警报(“http.response”)......它会警告没有写任何内容的警报。我认为这可能是因为存在相同的原始策略问题所以我尝试使用跨域资源共享来执行跨域Ajax,但这也不起作用(这是第二个代码)。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您无法设置这两个标题:

http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

Previous thread about your problem

我没试过就行了。

就个人而言,我会一直使用jQuery Ajax,但那只是“懒惰我”:))