$ .getJSON不能使用简单的PHP脚本

时间:2011-12-30 19:33:03

标签: php jquery ajax json

JS不能使用PHP脚本。我没有回应。

这是PHP脚本:

<?php

$a = array('data' => 'Hello');
echo json_encode($a);


?>

这是JQuery脚本:

function getCityAndState(data, location)
{
    var jsonString = {"zipCode":  data};
    var outR = outputResults    
    alert("JSON String:" + jsonString.zipCode); 
    if (location === "living")
    {   
        $("#livingCityField").val("");
        $("#livingStateField").val("");
        alert("Inside getCityAndState: " + location);
        //$.get("testfile.php", 
        //  {zipCode:  data}, 
        //  outR,
        //  'text'


        //  );

        $.getJSON("testfile.php",function(d) {
                alert("JSON Data: " + d.data);
                });


}

我做错了什么?

alert("Inside getCityAndState: " + location);按预期执行,但没有任何反应。抛出没有异常,没有错误消息,没有。它根本不会返回任何数据。

我使用Aptana 2作为IDE,以防万一。

2 个答案:

答案 0 :(得分:0)

您的PHP脚本缺少标题,它应该是:

<?php
header('Content-type: text/json'); //added line
$a = array('data' => 'Hello');
echo json_encode($a);


?>

答案 1 :(得分:-1)

jQuery的$.getJSON()函数的第二个参数不是返回数据的回调,它应该是包含发送到服务器的附加数据的映射或字符串。回调函数是第三个参数。

我没有对此进行测试,但它应该是这样的:

$.getJSON('ajax/test.json', "", function(data, textStatus, jqXHR){
    //In here you should have access to the data return by the server thourgh the "data" variable.
});

编辑:正如@Rocket和@Tadeck所指出的那样,可以省略可选参数,并且“重新排列”,因为jQuery会检查参数的类型。 getJSON()函数的第二个和第三个参数就是这种情况。 鉴于此,虽然这不应该是问题的根源,但它确保函数以预期的顺序接收所有参数,并且它应该产生与省略第二个参数相同的结果。

文档:http://api.jquery.com/jQuery.getJSON/