Javascript 将ajax响应设置为变量,使其成为对象
这是返回的数据Javascript 将ajax响应设置为变量,使其成为对象,javascript,php,ajax,object,Javascript,Php,Ajax,Object,这是返回的数据 name: "Doe, John ", salary: "1000" 这是密码 $.ajax({ url: 'ajax.php', method: 'POST', data: {id: name.val()}, success: function(data){ var payObject = {data}; alert(payObject["name"]); } }}; 它总是返回未定义,我如何修复它 这是数据库中的emp
name: "Doe, John ", salary: "1000"
这是密码
$.ajax({
url: 'ajax.php',
method: 'POST',
data: {id: name.val()},
success: function(data){
var payObject = {data};
alert(payObject["name"]);
}
}};
它总是返回未定义,我如何修复它
这是数据库中的employee表
name salary
Doe, John 1000
这里是ajax.php
<?php
include 'db.php';
$sql = $db->query("SELECT * FROM employee");
$res = mysqli_fetch_assoc($sql);
echo 'name:"'.$res['name'].'", salary: "'.$res['salary'].'"';
?>
返回的字符串不能被JavaScript本身用作对象。要解决这个问题,您可以将数据库数据转换为JSON并简单地返回JSON。在JavaScript中,您可以轻松地将JSON字符串转换为JavaScript对象,并像使用任何其他JavaScript对象一样使用它 要将PHP数组转换为JSON字符串,请使用PHP函数,使PHP代码如下所示
<?php
include 'db.php';
$sql = $db->query("SELECT * FROM employee");
$res = mysqli_fetch_assoc($sql);
echo json_encode($res); // convert PHP associative array to JSON string
?>
这一行:
var payObject={data}代码>
应该是:
var payObject=JSON.parse(数据)代码>
使用parse
函数将json字符串值转换为实际的JavaScript对象。检查此项:您的代码有一些更正:
首先,ajax脚本块应该是:
$.ajax({ });
而不是
$.ajax({}};
然后,您应该添加数据类型:'json'
,以获取json对象作为服务器响应
我已经对其进行了测试,并成功地从服务器获取json数据。代码如下:
$.ajax({
url: 'data.php',
method: 'POST',
data: {
id: $('#name').val()
},
dataType: 'json',
success: function(data) {
var payObject = data;
alert(payObject.name);
}
});
<?php
class User {
public $name;
public $salary;
}
?>
<?php
/**include 'db.php';
$sql = $db->query("SELECT * FROM employee");
$res = mysqli_fetch_assoc($sql);*/
//fill your object
$user = new User();
$user->name = "MTOha";
$user->salary = 100000000;
echo json_encode($user);
?>
然后,您需要将数据包装到类中,可能是这样的:
$.ajax({
url: 'data.php',
method: 'POST',
data: {
id: $('#name').val()
},
dataType: 'json',
success: function(data) {
var payObject = data;
alert(payObject.name);
}
});
<?php
class User {
public $name;
public $salary;
}
?>
<?php
/**include 'db.php';
$sql = $db->query("SELECT * FROM employee");
$res = mysqli_fetch_assoc($sql);*/
//fill your object
$user = new User();
$user->name = "MTOha";
$user->salary = 100000000;
echo json_encode($user);
?>
mysqli\u fetch\u assoc
结果是数组,您也可以像YottoDead的答案一样使用。{data}
使用字符串的值创建一个名为data
的属性对象,即,{data:'name:'Doe,John',salary:'1000'}
。为什么不将PHP更改为返回JSON?