发送JSON作为AJAX响应。 json_encode只是不工作?

时间:2011-10-04 09:37:38

标签: php ajax json

我已经完成了一些工作,然后将数组编码到json对象中并发送它们,但是我只是无法使json-encode工作...

我发送ajax响应的脚本如下......

        function loadCalls(sid)
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    innerText = xmlhttp.responseText;
                    aCall = document.createElement('div');
                    aCall.innerHTML = innerText;
                    document.getElementById("calls").appendChild(aCall);
                }
            }
            xmlhttp.open("POST","loadCalls.php",true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send("fname=<? echo $fname; ?>&lname=<? echo $lname; ?>&email=<? echo $email; ?>&sid=" + sid);
        }

我的php表单代码如下......它只是构建一个数组尝试将其编码为JSON,然后将其发送回上面的loadCalls函数。

//让我们抓住超级长变量......

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$sid = $_POST['sid'];

//Array for all the tokens to go into...
$ourCalls = array();

//Our counter
$i = 0;

//Build the query
$querytokens = "SELECT * FROM lime_tokens_".$sid." WHERE firstname='".$fname."' AND lastname ='".$lname."'";

//execute query
$resulttokens = mysql_query($querytokens) or die ("Error in query: $querytokens. ".mysql_error());      

// see what rows were returned
while($rowtokens = mysql_fetch_row($resulttokens)) {
    $ourCalls[$i] = $rowtokens[5];
    $i++;
}

echo json_encode($ourCalls);

// free result set memory
mysql_free_result($resulttokens);

// close connection
mysql_close($connection);

如果我只是回显我们的print_r $ ourCalls,我会显示该文本,我的思路是,即使我按照我想要的方式将代码留在第一部分,它仍然会在我的屏幕上显示为字符串。但我一无所获。

请帮助:)

修改

print_r的输出是:

Array ( [0] => b8r5x6w53d6cahw [1] => p5ugbeg68b4qixy ) 1
Array ( [0] => 4c85zznh955gjsc [1] => 2atggeb2hyg9mbj ) 1
Array ( [0] => z4kihguxfu2npx9 ) 1

最后的1是什么意思?

编辑 - 放弃了回声,1现已消失。

2 个答案:

答案 0 :(得分:1)

确保您使用的是php 5.2+,因为先前版本中不存在json_encode()

答案 1 :(得分:-2)

我看不到你的分隔符? ,和;和{}?