我试图通过json从ajax调用中获取数据,并在成功调用ajax后访问数据。为此,我写了以下代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once('../include/functions.php');
// session_start();
if( isset($_POST['bike_id']))
{
$rows = array();
// echo " I am in isset";
$bike_id = $_POST['bike_id'];
// $modal_name = $_POST['modal_name'];
// $json['insertModal'] = false;
// json_decode($modal_name);
json_decode($bike_id);
$result = selectBike_Modal($bike_id);
while ( $row = mysqli_fetch_array($result))
{
$rows[] = $row;
}
echo json_encode($rows);
}
else
{
echo "bike_id is not set";
}
?>
现在我想通过javascript访问它:
$('#choose_bike').on('blur',
function (e) {
e.preventDefault();
var bike_id = $('#choose_bike').val();
// var modal_name = $('#modal_name').val();
// // alert("bike_id is " + bike_id);
alert("On blur is clicked.");
if ( bike_id == "Select A Bike")
{
$('#defaultError').addClass("alert alert-danger");
$('#defaultError').text("Please choose a Bike");
}
else
{
// alert("Bike is : " + bike_id);
$.ajax(
{
url:'../admin/backend/getModal.php',
type:'POST',
data: { bike_id: bike_id},
dataType:"json",
success:function(data)
{
alert(" i am in success");
var obj = JSON.parse(data);
alert("object is " +obj);
},
error : function() { console.log(arguments); }
}
);
}
});
我有两个问题:
我之后没有得到任何东西:
警告(&#34;我成功&#34;);
表示以下内容无效:
var obj = JSON.parse(data);
alert("object is " +obj);
[{&#34; 0&#34;:&#34; 5&#34;&#34; bike_modal_id&#34;:&#34; 5&#34;&#34; 1&#34 ;: &#34;沙贾汗&#34;&#34; bike_modal_name&#34;:&#34;沙贾汗&#34;&#34; 2&#34;:&#34; 30&#34;&#34; bike_id& #34;:&#34; 30&#34;},{&#34; 0&#34;:&#34; 6&#34;&#34; bike_modal_id&#34;:&#34; 6&#34; &#34; 1&#34;:&#34;夯&#34;&#34; bike_modal_name&#34;:&#34;夯&#34;&#34; 2&#34;:&#34; 30&#34;&#34; bike_id&#34;:&#34; 30&#34;}]
我正在
&#34; 0&#34;:&#34; 5&#34;&#34; bike_modal_id&#34;:&#34; 5&#34;
额外。 请帮我在javascript中正确解析json并只获取所需的ajax值。
编辑:
选择bike_model看起来像:
function selectBike_Modal($bike_id)
{
include("connectvars.php");
$query = "select * from bike_model where bike_id = '$bike_id'";
$result = mysqli_query($dbc,$query)
or die('error in fetching');
// if ( mysqli_num_rows($result))
// return 0;
// else
return $result;
// if ( () )
// {
// return $result;
// }
// else
// {
// return 0;
// }
}
答案 0 :(得分:0)
dataType:"json"
,因此不需要使用JSON.parse()
解析返回的数据,因为返回的数据已经是对象。您只需执行data[0].bike_modal_name
。即可访问这些对象
问题2
您的重复值问题,即。 "0":"5","bike_modal_id":"5"
是因为默认情况下mysqli_fetch_array()
将结果行作为关联数组和数字数组提取。你可以改变
while ( $row = mysqli_fetch_array($result))
到
while ( $row = mysqli_fetch_array($result, MYSQLI_ASSOC))
或
while ( $row = mysqli_fetch_assoc($result))