【问题标题】:Counting words not chars in array计算数组中的单词而不是字符
【发布时间】:2018-05-27 19:42:17
【问题描述】:

我从 laravel 函数返回这个数组:

 $arr = json_encode(array('priority'=>$priority,'status'=>$status,'type'=>$type));
         return $arr;

但是在我的 ajax 中,我像这样捕获它们:

 success: function (data) {
        console.log(data.length);
        var priority =data.priority;
         var status =data.status;
         var type = data.type;

        // $('#submenu').empty();
        for(var i=0; i<data.length; i++){
        $('#output').append("<tr><td>" + priority + "</td><td>" + status + "</td><td>" + type + "</td></tr>");

        }
      },

问题是三个priority、status和type未定义,data.length返回67而不是3,还有console.log(data);=&gt;returns {"priority":"priority one","status":"status one","type":"type one"}

我该如何解决这个问题?

【问题讨论】:

标签: javascript php ajax


【解决方案1】:

data 变量包含一个字符串,因为您可能没有将content-type 标头作为application/json 发送。

你可以像这样解码字符串:

....
success: function (data) {

        console.log(data); 

        var json = JSON.parse(data);

        console.log(json);

        var priority = json.priority;
        var status = json.status;
        var type = json.type;

        // $('#submenu').empty();

        $('#output').append(
            "<tr>" + 
            "<td>" + priority + "</td>" + 
            "<td>" + status   + "</td>" +
            "<td>" + type     + "</td>" +
            "</tr>"
         );

 },
 ....

或者更好的方法是从控制器返回 JSON 响应:

   ....
   class MyController {
       ....
       public function sendReponse() {
           $data = $this->getDataSomehow();

           return response()->json($data);
       }
       ....
   }
   ....

【讨论】:

  • 它不打印任何东西
  • console.log(data);未定义,IDK 为什么
  • 解析json对象后添加console.log(data),查看结果
  • 我已经更新了答案,你能告诉我你在控制台中得到了什么吗?
【解决方案2】:

您收到的data 是一个字符串。您需要使用json_decode()JSON.parse() 对其进行解码

【讨论】:

  • console.log(data);未定义,IDK 为什么
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 2013-05-19
相关资源
最近更新 更多