在数组中计算单词不是字符

时间:2018-05-27 19:42:17

标签: javascript php ajax

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

 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>");

        }
      },

然而在我的ajax中,我这样抓住他们:

console.log(data);=>returns {"priority":"priority one","status":"status one","type":"type one"}

问题是三个优先级,状态和类型未定义,data.length 返回67而不是3 int x = -1 << 31; System.out.print(Integer.toBinaryString(-1) + " -1\n"); System.out.print(Integer.toBinaryString(x) + " " + x + "\n"); // output 11111111111111111111111111111111 -1 10000000000000000000000000000000 -2147483648

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

您收到的data是一个字符串。您需要使用json_decode()JSON.parse()

对其进行解码

答案 1 :(得分: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);
       }
       ....
   }
   ....