0

我的 PHP 脚本

<?php
//connect to server
//selecting the database
$temparr=array();
$count=0
$result = mysql_query("some query");
while($row = mysql_fetch_assoc($result))
{
   $temparr["$count"]= $row["value"] ;
   $count+=1;
}
echo json_encode($temparr);
mysql_close($conn); 
?>

我的javascript文件中的AJAX函数调用如下

function someFunction(){

  xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET", "mymethodpath", true);

  xmlhttp.onreadystatechange = function () {
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        alert(xmlhttp.responseText);
        //this gives me a popup of the encoded data returned by the php script
        // the format i see in the popup window is ["1","2"]
        var temp=$.parseJSON(xmlhttp.responseText);

        alert(temp.count);
        //however this produces an undefined value

     }

  xmlhttp.send();
}

那么我如何解析返回的字符串并显示正确的计数(这里计数应该是 2)

4

4 回答 4

3

我假设您想要返回数组中的元素数。但是,count它不是正确的 JavaScript 属性。改为使用temp.length

于 2013-03-11T11:56:23.147 回答
1

这是正确的方法:

var obj = jQuery.parseJSON('["1","2"]');
alert(obj.length);

“.count”需要替换为“.length”。在这里试试:http: //jsfiddle.net/4rrYz/

于 2013-03-11T12:02:05.137 回答
1

使用 jQuery,您可以简化您的 ajax 调用顺便说一句:

function someFunction(){
    $.ajax({
        url: "mymethodpath",
        type: 'get',
        dataType: 'json',
        success: function(jsonObj) {
            alert(jsonObj.length);
        }
    });
}

您也可以使用$.getJSON(),但我自己喜欢使用基本功能(getJSON 也会在幕后使用)。

于 2013-03-11T12:03:44.723 回答
0

在浏览器窗口中调用您的 php 脚本,您将看到没有名为“count”的 JSON 对象。您的数组将由标记为 0、1、2、... 的元素组成

如果您尝试显示 temp[0],您应该会看到您的第一个值。

于 2013-03-11T11:58:22.973 回答