1

如果我在这里犯了一个愚蠢的错误,请原谅我......但我对 PHP 并不陌生......我已经坚持了很长时间。我尝试了几种方法,但我只能传递一个表行,而不是多行

我什至尝试过以下方法,但我遇到了同样的错误。 http://www.electrictoolbox.com/json-data-jquery-php-mysql/

这就是我想要做的:

1) 使用 JQuery 进行 Ajax 调用,从服务器获取数据。

  $.ajax({                                      
  url: 'test.php',                  //the script to call to get data          
  data: "",                        
  dataType: 'json',                //data format      
  success: function(data)          //on recieve of reply
  {
    //use "data"
  }

2) 使用 PHP 从 MySql 数据库中获取表数据。

$result = mysql_query("SELECT username,characterType FROM usertable");   

3) 将所有行作为 JSON 数据传递回调用函数。

//This works , Returns one row and I am able to get the result back at AJAX end
$array = mysql_fetch_row($result);                          
echo json_encode($array);

mysql_fetch_assoc($result)失败并出现以下错误:

XML Parsing Error: no element found Location: moz-nullprincipal:{6b1***-****somecrap numbers****-***86} Line Number 17, Column 3:

$array = mysql_fetch_assoc($result);                          
echo json_encode($array);

我什至尝试mysql_fetch_array($result, MYSQL_NUM)按照其他相关问题中的建议使用,但我无法解决该问题。

任何帮助是极大的赞赏。

=============

更新:

我可能是错的,但只是想知道,这是否可能......这可能是与本地设置相关的问题吗?配置错误..?

我已经使用“XAMPP 安装”[Apache / MySQL / Tomcat ...捆绑在一个包中]完成了我的本地主机设置...当我将文件作为“PHP应用程序”运行时它运行得很好...我能够得到“所有行”但是当我在我的 apache 服务器上部署代码时它没有运行......整个 php 文件作为响应出现,带有“XML 解析错误”[我正在使用 firebug 来跟踪响应]

谢谢普拉纳夫

4

3 回答 3

0

这里有几点需要注意:

正如 Rup 提到$array = mysql_fetch_row($result);的,只返回一行。

另一件事是 test.php 当前不返回 JSON 对象;要查看发生了什么,它有助于注释掉dataType: 'json',并用于console.log(data);查看返回的内容。您的回复可能如下所示:

["someUsername","someChartype"]

您期望的对象的格式可能更像是:

[{"username":"foo","chartype":"admin"},
 {"username":"bar","chartype":"user"},
 {"username":"fum","chartype":"guest"}]

要获取关联数组的格式,请mysql_fetch_assoc($result)改用;那会给

{"username":"someUsername","chracterType":"someChartype"}

总而言之,将您的 php 代码更新为:

  • 循环遍历您的结果,将它们推送到数组中。
  • 最后对整个数组进行编码

    $outputArray = array();
    while( $row = mysql_fetch_assoc( $result ) ){
        array_push($outputArray, $row);
    }
    echo json_encode($outputArray);
    

查看如何从 mysql 数据库构建 JSON 数组以获取更多信息。此外,正如其中一个答案所提到的,它值得使用PDO而不是mysql_*

于 2012-08-02T23:57:37.420 回答
0

不要像@Tuanderful 指示的那样开始手动编写 JSON 字符串。让我们json_encode()来处理——只要给它正确的数据。尝试这样的事情:

$records = array();

while ( $record = mysql_fetch_assoc( $result ) ) {

  $records[] = $record;

}

echo json_encode( $records );
于 2012-08-03T00:07:51.770 回答
0

好吧,我会喜欢这个:

$.ajax({                                      
  url: 'test.php',                  //the script to call to get data          
  //data: "",                        
  dataType: 'json',                //data format      
  success: somevar
})



var somevar = function(data)          //on recieve of reply
  {
    //use "data"
    somevar2 = jQuery.parseJSON(data)
    //now You can enter each row/cell from db(/php) like this
    // somevar2[0] would be the first row from php
    //if You want to do something with every line You can use:
    //$.each(somevar2, function(key,value){
    //$('#divname').html(value.cellnameoftable)
  }

我希望它会有所帮助;)

于 2012-08-03T19:55:38.663 回答