我编写了一个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; 但是它正在逐字逐句地给出输出。
这是实际输出
但我需要输出一行。比如/video_frames/bb/frame136.jpg 请帮我弄明白我哪里错了。
答案 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;键。你可以解析它并使用它。