带有查询字符串的jQuery.ajax()url

时间:2014-03-11 19:55:40

标签: php jquery ajax

我使用此方法显示PHP生成的文本:

$.ajax({
    url: "test.php?hello",

    success: function(data) {
        myDiv.textContent = data;
    }
});

test.php的:

<?php
if ($_SERVER["QUERY_STRING"] == "hello")
    echo "Hello world!";
else
    echo "meh";
?>

输出&#34; meh&#34;。我该如何解决这个问题?

更新:使用其他方法获取文件内容解决了这个问题。

var req = new XMLHttpRequest();

req.open("GET", "test.php?hello");
req.onreadystatechange = function() {
    myDiv.textContent = req.responseText;
}

req.send();

3 个答案:

答案 0 :(得分:0)

有些观点:

  1. 如果您的服务器是基于unix的,那就是大小写,所以除非您在Windows上运行,否则它应该是url: "Test.php"

  2. 你还没有指定使用哪种HTTP方法,我想它已经得到了,所以我添加了它。

  3. 不需要标题。

  4. 你最好还是返回一个JSON对象并解码它,而不仅仅是一个字符串。

  5. 添加错误处理程序以及成功处理程序,因此来自服务器的状态代码不是2xx(例如404未找到)的任何数据都将到达该回调,并且不会保持未处理状态。

  6. 如果您正在使用其中一个常见的浏览器,您还应该看到控制台中记录的状态代码出错。

    test.php的:

    <?php
    echo json_encode(array("message" => "your text"));
    ?>
    

    $.ajax({
        url: "Test.php",
        method: "GET",
        success: function(data) {
            data = $.parseJSON(data);
            myDiv.textContent = data.message;
        },
        error: function(xhr, data){
             console.warn("XHR failed");
             console.log(xhr);
        }
    });
    

    如果有任何帮助,请告诉我。

答案 1 :(得分:0)

    <?php
if ($_SERVER["QUERY_STRING"] == "hello")
    echo "Hello world!";
else
    echo $_SERVER["QUERY_STRING"];
?>

调试你的php脚本并查看发送给这个var的值。

答案 2 :(得分:-1)

尝试这样的事情:

$.ajax({
   url: "test.php",
   cache: false
})
.done(function(data) {
   $myDiv.textContent(data);
}); 

另外,从php文件中删除标题。不需要。