2016-08-24 91 views
0

我有一对<select class="searchselect">标签在我的HTML,所有填写数字值。我用下面这段代码初始化选择二:Select2数据返回字符串,而不是数组

$(".searchselect").select2({ 
     ajax: { 
      dataType: "json", 
      type: "POST", 
      data: function (params) { 
       return { 
        term: params.term, 
        '_token': token, 
        'data': function() { 
         var result = []; 
         var i = 0; 
         $('.searchselect').each(function() { 
          result[i] = $(this).val(); 
          i++; 
         }); 

         return result; 
        } 
       }; 
      }, 
      url: function() { 
       var type = $(this).attr('id'); 
       return '/test/get' + type; 
      }, 
      cache: false, 
      processResults: function (data) { 
       console.log(data); 
       return { 
        results: data 
       }; 
      } 
     } 
    }); 

在我的PHP我有以下的代码:

public function getTest() 
{ 
    return json_encode($_POST['data']); 
} 

返回PHP是被记录在控制台中。

结果是用逗号分隔元素的字符串。但是,这不是它应该是。这是这样的:1,1,,,,,,(前两个选择字段已填满,其余仍为空)。但是,当我尝试访问第二个元素(数组中的第二个元素)时,我需要访问第三个元素,因为第二个元素是逗号。

public function getTest() 
{ 
    return json_encode($_POST['data'][2]); // <--- this returns a comma instead of a 1 
} 

哪里出问题了?为什么它使用纯字符串而不是数组?

+0

json_decode而不是json_encode? – baskin

+0

尝试'返回$ _POST ['data'];''不带'json_encode',因为它已经在JSON中 – Jag

回答

0
getTest()

public function getTest() 
{ 
    return json_decode($_POST['data']); 
} 

要在编码JSON对象到字符串,而不是其解码到阵列的

更改功能。

相关问题