【问题标题】:Traverse JSON data with jQuery使用 jQuery 遍历 JSON 数据
【发布时间】:2011-07-31 08:48:47
【问题描述】:

我不知道如何将一堆 MySQL 行放入 JSON 数据结构并在 java 脚本中迭代每个行字段。

这是我在 codeigniter 中的查询

function get_search_results() {

    //$this->db->like('title', $searchText);
    //$this->db->orderby('title');
    $query = $this->db->get('movies');

    if($query->num_rows() > 0) {

        foreach($query->result() as $movie) {

            $movies[] = $movie->title;                

        }

    }

    return $movies;

}

为 json 编码数组

$rows= $this->movie_model->get_search_results();
echo json_encode($rows);

我的 jQuery AJAX 请求,

 $.ajax({
      type: "GET",
      url: "publishlinks/search_movies",
      data: searchString,
      ...

这就是我一直在尝试遍历 java 脚本中的行的方式。它遍历每个字符: 1 t 2 h 3 e 4 g ... 7 e 我需要这个:1比赛2输了3你

   success: 
      function(result) {                                
        $.each(result, function(key, val) {
        alert(key + ' ' + val);
      })

//alert(result);
}

【问题讨论】:

标签: php javascript jquery


【解决方案1】:

看起来它将结果视为字符串而不是解析的 JSON,因此将其视为字符串进行迭代。这可能意味着它没有在响应中返回干净的 JSON 编码字符串,因此我会检查响应以确保它是有效的 JSON。 jQuery 应该能够智能地猜测内容类型并进行相应的解析。

您还可以尝试在 ajax 请求上使用 dataType: "json" 选项,以强制将其解析为 JSON,而不是让 jQuery 猜测。

【讨论】:

  • 噢,谢谢,我的 dataType: 'json' 由于某种原因被注释掉了,我什至从我的问题 O.O 中省略了那部分
【解决方案2】:

使用 $.ajax 的 dataType 属性 $.ajax documentation

数据类型

“您期望从 服务器。”

使用 firebug 查找响应变量的类型。在您的情况下,响应是字符串,但它应该是数组(或对象?)

如果您不希望 jQuery 自动评估 json,则按原样运行,并在成功函数中添加以下内容:

var parsed = $.parseJson(response);

这里是parseJson方法的文档:parseJson

【讨论】:

    【解决方案3】:

    我认为你的问题是你没有获取实际的 json 而是简单的字符串响应......

    在您的 jquery ajax 请求中使用 $.getJSON 或将 dataType 指定为 json!

    【讨论】:

      【解决方案4】:

      您的 PHP 是否返回 JSON 标头?

      header('Content-type: application/json');
      

      其他尝试

      result = JSON.decode(result);
      

      在你的“每个”循环之前

      【讨论】:

        【解决方案5】:

        确保从服务器端返回正确的内容类型。对于 JSON,即 application/json。

        $rows = $this->movie_model->get_search_results();
        header('Content-type: application/json');
        echo json_encode($rows);
        

        还添加 dataType: "json" 到您的 jQuery 请求中,就像牛肉袋说的那样:

        $.ajax({
          type: "GET",
          url: "publishlinks/search_movies",
          data: searchString,
          dataType: "json",
          ...
        

        【讨论】:

          【解决方案6】:
          dataType: "json",
          success:function(data){
          var obj=$.parseJSON(data);
          data=obj.data;
          $.each(data,function(){
             //json data
          })
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-17
            • 2015-12-21
            • 1970-01-01
            • 2023-03-29
            • 1970-01-01
            • 2021-10-04
            相关资源
            最近更新 更多