将ajax响应设置为变量以使其成为对象

时间:2017-10-09 02:33:30

标签: javascript php ajax object

这是返回的数据

#Set directory
dir = setwd("D:/FRhData/elb") #set directory
filelist = list.files(dir) #save file names into filelist

myfile = matrix() 
#Read files into R
 for ( i in 1:length(filelist)){
  myfile[i] = readLines(filelist[i]) 

         *code with all calculations*

   write.csv(x = finalDF, file = paste (filename[i] ,"_output. csv")
 }    

这是代码

name: "Doe, John ", salary: "1000"

它总是返回undefined,我该如何解决?

这是数据库中的员工表

$.ajax({
   url: 'ajax.php',
   method: 'POST',
   data: {id: name.val()},
   success: function(data){
      var payObject = {data};
      alert(payObject["name"]);
   }
}};

这里是ajax.php

name       salary
Doe, John  1000

3 个答案:

答案 0 :(得分:1)

只返回一个JavaScript本身不能用作对象的字符串。要解决此问题,您可以将数据库数据转换为JSON并简单地返回JSON。在JavaScript中,您可以轻松地将JSON字符串转换为JavaScript对象,并像使用任何其他JavaScript对象一样使用它。

要将PHP数组转换为JSON字符串,请使用PHP函数json_encode,这样您的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
?>

现在您只需使用JSON.parse()将JSON字符串转换为JavaScript对象,或者使用jQuery的dataType:'json'参数

$.ajax({
   url: 'ajax.php',
   method: 'POST',
   data: {id: name.val()},
   dataType: 'json', // convert JSON string to JavaScript object
   success: function(data){
      var payObject = data;
      alert(payObject["name"]);
   }
}};

答案 1 :(得分:0)

这一行:

var payObject = {data};

应该是:

var payObject = JSON.parse(data);

使用parse函数会将您的json字符串值转换为实际的JavaScript对象。看看这个:https://www.w3schools.com/js/js_json_parse.asp

答案 2 :(得分:0)

您的代码有一些更正:

首先,它应该是ajax脚本块:

$.ajax({ }); 

而不是

$.ajax({}};

然后,您应该添加dataType:'json',以获取json对象作为服务器响应。

我测试了它并成功从服务器获取json数据代码如下:

$.ajax({
  url: 'data.php',
  method: 'POST',
  data: {
    id: $('#name').val()
  },
  dataType: 'json',
  success: function(data) {
    var payObject = data;
    alert(payObject.name);
  }
});

然后,您需要将数据包装到Class,可能是这样的:

<?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_fetch_assoc结果是数组,你也可以使用YottoDead的答案。