0

同じように単純なAJAXを使用して非常に単純なPHPページを呼び出していますが、PHPが正常であっても、呼び出しは常に何も返しません。つまり、PHPページのURLに移動して、「Hello World」をエコーし​​ていることを確認できますが、JSで呼び出された場合は何も返されません。

以下は、Javascriptを含むHTMLページです。

<!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ページの内容は次のとおりです 。ライブPHPページはここをクリックしてください

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

PHPページがテキストを正しくエコーしているのに、なぜこれがJSに何も返さないのですか?

4

2 に答える 2

2

上で示唆したように、AJAXリクエストは通常​​、呼び出し元と呼び出し元の両方が同じドメインにある場合にのみ機能します。javascriptを含むhtmlコードが同じドメインにあることを確認する必要がありますhttp://www.convolutedconstruct.com

そうでない場合は、CORSを使用して、php出力でこのヘッダーを送信することにより、ajaxがphpページから入力を受信できるようにすることができます。

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

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

于 2012-08-05T18:06:52.917 に答える
1

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/

于 2012-08-05T18:14:14.827 に答える