Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ajax响应设置为变量,使其成为对象_Javascript_Php_Ajax_Object - Fatal编程技术网

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?