Javascript AJAX响应,无法正确警告JSON字符串
我发现一个奇怪的问题 使用php,我在mysql数据库上运行一个select查询,我试图将其返回到我的ajax调用中,这样我就可以通过它进行for循环,但我总是得到未定义的警报,我可以警报整个json字符串,但是不能以值为目标 Ajax代码:Javascript AJAX响应,无法正确警告JSON字符串,javascript,php,mysql,json,ajax,Javascript,Php,Mysql,Json,Ajax,我发现一个奇怪的问题 使用php,我在mysql数据库上运行一个select查询,我试图将其返回到我的ajax调用中,这样我就可以通过它进行for循环,但我总是得到未定义的警报,我可以警报整个json字符串,但是不能以值为目标 Ajax代码: $.ajax({ type: "POST", url: 'database_data.php', data: { action: 'ct
$.ajax({
type: "POST",
url: 'database_data.php',
data: {
action: 'ct',
input: input
},
success: function (data) {
var obj = JSON.parse(data);
alert(obj[0].pid);
alert(data[0].pid);
},error: function(request, status, error){
alert("Error: Could not delete");
}
});
PHP代码:
$base= mysqli_connect($dbhost, $dbuser, $dbpass, $dbbase);
if ($_POST['action']== "ct"){
$input = $_POST['input'];
$return_arr = array();
$sql = "SELECT pid FROM programmes WHERE complete_title LIKE '%$input%' LIMIT 30";
if ($result = mysqli_query( $base, $sql )){
while ($row = mysqli_fetch_assoc($result)) {
$row_array['pid'] = $row['pid'];
array_push($return_arr,$row_array);
}
}
mysqli_close($base);
echo json_encode($return_arr);
}
警报数据给出如下响应:
[{"pid":"p00547jm"},{"pid":"p0054880"},{"pid":"p005492h"},...
如果我选择警告数据[0],数据[1],它会打印每个字符,这是因为您可能会得到字符串作为响应。因此,您的
数据
是一个字符串
您可以使用JSON.parse()
将其解析为JSON对象,然后像这样访问数据
data='[{“pid”:“p00547jm”},{“pid”:“p0054880”},{“pid”:“p005492h”}];
log(JSON.parse(data)[0].pid)
您可以使用数据类型
告诉jquery您希望从服务器返回什么。看
就你而言
$.ajax({
type: "POST",
url: 'database_data.php',
dataType: 'json',
data: {
action: 'ct',
input: input
},
success: function (data) {
var obj = data; // I should already be json!
alert(obj.pid);
alert(data.pid);
},error: function(request, status, error){
alert("Error: Could not delete");
}
});
$.ajax({dataType:“json”,url:url,data:data,success:success})
添加数据类型,或使用简写:您正在提醒未解析的数据[0]
。obj
是一个数组,因此您需要在那里使用适当的索引:obj[0]。pid
@CBroe,最初它也不是这样工作的,我在提交问题时没有将其编入索引的原因是因为我在尝试各种可能性lol@bigbounty他仍然需要首先访问正确的数组元素。