Ajax调用PHP页面总是返回任何内容,即使PHP页面回应什么东西

问题描述:

我打电话给一个非常简单的PHP页面,但是调用总是返回任何内容,即使PHP很好。也就是说,您可以转到PHP页面的URL并看到它回应“Hello World”,但当它使用JS调用时,它不会返回任何内容。Ajax调用PHP页面总是返回任何内容,即使PHP页面回应什么东西

下面是HTML页面的JavaScript:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Title of the document</title> 
</head> 

<body> 
The content of the document......<br /> 

Enter your email: <input id="email" type="text" /> 
<input type="button" onclick="setXMLHttpRequest()" value="Go!" /> 

<script type='text/javascript'/> 

     var http; 

     function setXMLHttpRequest() 
     { 
      if(window.XMLHttpRequest) 
       http = new XMLHttpRequest(); 
      else if(window.ActiveXObject) 
       http = new ActiveXObject("Microsoft.XMLHTTP"); 

       url = "http://www.convolutedconstruct.com /Ajax/checkemail.php?email=" + 
            document.getElementById('email').value; 
       http.onreadystatechange = display; 
       http.open("GET", url, true); 
       http.send(null); 

     } 

     function display() 
     { 
      if (http.readyState == 4) 
      { 
       infostr = http.responseText; 
       alert("From the PHP: " + infostr); 
      } 
     } 
</script></body></html> 

这里是PHP页面的内容 Click here for the live PHP page

<?php 
$email = $_GET['email']; 
echo "Hello World!"; 
?> 

为什么这回没事了JS,即使PHP页面正确地回显文本?

+2

让我猜猜,http://en.wikipedia.org/wiki/Same_origin_policy – Adi 2012-08-05 17:40:23

+0

@adnan说,这不是一个有效的路径AJAX:'convolutedconstruct.com/Ajax/checkemail.php?email ='如果你想跨越原点试试JSONP – Sammaye 2012-08-05 17:41:46

+0

或者只是让你的路径:'/Ajax/checkemail.php?email =' – Sammaye 2012-08-05 17:42:13

如上所示,AJAX请求通常只在调用者和被调用者位于同一个域时才起作用,您必须确保包含javascript的html代码位于相同的域http://www.convolutedconstruct.com中。

如果不是,您可以使用CORS,让你的Ajax通过在你的PHP输出发送此头从你的PHP页面接收输入的情况下

<?php 
header("Access-Control-Allow-Origin: *"); 
//rest of your code 
?> 

参见:http://enable-cors.org/

+0

我会将这两个页面放在服务器上的同一目录中。在这种情况下,我应该使用相对路径还是使用http前缀? – 2012-08-05 18:23:48

+1

他们不一定需要在相同的目录,但如果这有助于您的方便,那么是的,这是很好的。只要域和方案相同,就可以使用相对路径或绝对路径,该路径也不会破坏ajax请求。因此,如果您的网页位于http://www.example.com上,那么它应该能够从http://www.example.com上的任何页面接收数据。我通常使用完整路径 – 2012-08-05 18:25:40

我不喜欢使用XMLHTTP请求。相反,我使用jQuery的方法$.ajax({});方法。它总是适合我!

$.ajax({ 
    type: "POST", // or 'GET' 
    url: "your-url.php", // url that you are passing the data to 
    data: { 
     dataName: 'data to pass' // string, variable, object, array, etc 
    }, 
    success: function(output) { // output is what the url is 'echoing' back to the jQuery 
     // do something when the ajax method is complete. 
    } 
}); 

不要忘记导入jQuery的源代码 - http://code.jquery.com/jquery-1.7.2.min.js

这些是最常见的是在使用AJAX组件。

如果您愿意,我很乐意为您提供更多帮助。

如果您想了解更多的只是检查它的文档:http://api.jquery.com/jQuery.ajax/