JSON值未正确显示

时间:2016-09-03 01:12:13

标签: php json ajax

我编写了一个php脚本,它接受来自ajax的POST请求并返回响应。一切正常。但接收字符串逐个字母地分开,我不明白是什么原因。

这是我的AJAX代码,

$("#btn").click(function(){
          console.log($("#search_bar").val());
          var dataV;
          var htmlText = '';
          var containerbootsrap = '';
          var filename = '';
          var index_no;
              $.ajax({
                  type: "POST",
                  crossDomain: true,
                  url: "http://localhost:8090/ontology/setText",
                  data: $("#search_bar").val(),
                  contentType: 'text/plain',
                  // dataType: "json",
                  success: function( data, textStatus, jQxhr ){
                      console.log('data');
                      console.log(data);

                      for( var item in data) {
                        console.log ("item: " + item);
                        console.log ("data: " + data[item]);
                        index_no = data[item];

                        // htmlText += '<div class="div-conatiner">';
                        // htmlText += '<p class="p-name"> Name: ' + data[item] + '</p>';
                        // htmlText += '<img class="imageload" src="' + data[item] +  '" />';
                        // htmlText += '</div>';

                        // filename = data[item].replace(/^.*[\\\/]/, '')

                        $.ajax({
                          data: 'index_no=' + index_no,
                          url: 'retrivedata.php',
                          method: 'POST', // or GET
                          dataType: 'json',
                          success: function(msg) {
                                    console.log(msg);
                                    for(var item in msg){
                                      console.log ("item: " + item);
                                      console.log ("data: " + msg[item]); 
                                    }

                                    $('#home').hide();

                                    containerbootsrap += '<div class = "container" id="search_container">';
                                    containerbootsrap += '<div class = "row homepage">';
                                    containerbootsrap += '<div class = "col-md-5 col-md-offset-3">';
                                    containerbootsrap += '<a href="#" class="thumbnail">';
                                    containerbootsrap += '<img class="imageload" src="' + msg +  '" />';
                                    containerbootsrap += '<h3 id="video_name"> ' + filename + ' </h3>'
                                    containerbootsrap += '</a>';
                                    containerbootsrap += '</div>';
                                    containerbootsrap += '</div>';
                                    containerbootsrap += '</div>';

                                    $('body').append(containerbootsrap);

                                  }
                        });

                        // $.post('retrivedata.php', { num: 5 }, function(result) {
                        //       alert(result);
                        // });

                        // $('#home').hide();
                      }

                      // $('body').append(containerbootsrap);

                  },
                  error: function( jqXhr, textStatus, errorThrown ){
                      console.log( jqXhr );
                      alert(jqXhr)
                  }

              });
        });

php代码在

之下
<?php
$index_no = $_POST["index_no"];
// echo $index_no * 2;

include('dbConnection.php');
$query = mysql_query("SELECT * FROM video_data WHERE index_no =    $index_no");

while ($row = mysql_fetch_assoc($query)) {
    $imagePath = $row['thumbnail_url'];
    $videoPath = $row['video_url'];
    // echo $imagePath;
    // echo $videoPath;
    echo json_encode($imagePath);
}

?>

我需要输出为:&#39; imagepath&#39; 但是它正在逐字逐句地给出输出。

这是实际输出

Output

但我需要输出一行。比如/video_frames/bb/frame136.jpg 请帮我弄明白我哪里错了。

3 个答案:

答案 0 :(得分:0)

您需要将返回的JSON字符串解析为数组。一种方法是在ajax成功回调中添加editinline(下面突出显示)。我能够重新创建你所看到的同样的东西并添加这条线来修复它。希望这可以帮助。 parseJSON()

data = $.parseJSON(data)
  

... success: function( data, textStatus, jQxhr ){ console.log('data'); console.log(data);

data = $.parseJSON(data);

答案 1 :(得分:0)

更好地检查您首先获得的变量中的值类型

data = '{"name": "Bhushan"}' //string value 
data = {name: "Bhushan"}     //object value

//for testing you can use either, this will make it unbreakable for this context

if(typeof(data) == 'string')
{ 
   data = JSON.parse(data)
}
//rest of code

这将为您的模块提供良好的稳定性,否则您可能会 json解析意外令牌

答案 2 :(得分:0)

好吧,在您需要指定数组而不是字符串的PHP代码中。 $ imagePath中的变量似乎是一个字符串。你可以这样做。

- This post from News Model 
- This post from Blog Model 
- This post from News Model 
- This post from Blog Model 
- This post from News Model 
- This post from Blog Model 

这将为您提供结果&#39;结果&#39;键。你可以解析它并使用它。