2016-08-24 14 views
0

<select class="searchselect">というタグがHTMLにあり、すべて数値で埋められています。私は、Selectセレクトを初期化するために、次のコードを使用しています:私のPHPで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 
       }; 
      } 
     } 
    }); 

私は次のコードを持っている:

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

返さPHPがコンソールに記録されますされています。

結果は、要素を区切るためにカンマで区切られた文字列です。しかし、これはそうではありません。これは次のようなものです:1,1,,,,,,(最初の2つの選択フィールドは塗りつぶされ、残りは空のままです)。しかし、2番目の要素(配列の2番目の要素)にアクセスしようとすると、2番目の要素がカンマであるため、3番目の要素にアクセスする必要があります。

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

どこが間違っていますか?配列の代わりに単純な文字列を使用するのはなぜですか?

+0

json_encodeではなくjson_decode? – baskin

+0

'$ JSON ['data'];' JSONに既に入っているので、 'json_encode'を使わないで' return $ _POST ['data']; – Jag

答えて

0
あなたは文字列にJSONオブジェクトをコードの代わりに、配列にそれをデコードしている

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

にあなたの関数getTest()を変更

関連する問題