2016-08-24 89 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對象到字符串,而不是其解碼到陣列的

更改功能。

相關問題