2

私はphpに格納された配列を持っています:$cv1 = array('a','b');

以下のコードでわかるように、配列からそれぞれのデータを取得して、それを 2 つの別々の関数に委譲しようとしています。

しかし、php コールバック関数から返されるデータは次のとおりです。「a」、「b」ではなく「配列」。結果[0]は「A」を取得し、結果[1]は「r」を取得します。

手伝ってくれてありがとう!

js:

$('a').on('click',function(){
  var cv = $(this).data('cv');
  var url= '_php/myphp.php';
  $.post(url,{contentVar:cv},function(data) {
    result=data;
    return result;
  }).done(function() {
    alert(result[0]);
    $('#myDiv').html(result[1]);
  });
});

php:

$cv1 = array("a","b");

$contentVar = $_POST['contentVar'];

if($contentVar == "cv1")
{
    echo json_encode($cv1);
}
4

3 に答える 3

3

PHP"Array"では、誤って文字列にキャストされたときに、実際の配列の代わりに取得するのが一般的です。しかし、それはあなたがここでやっていることではありません。テストできます:

> $cv1 = array("a","b");
array(2) {
  [0] =>
  string(1) "a"
  [1] =>
  string(1) "b"
}
> json_encode($cv1);
string(9) "["a","b"]"

$cv1正しくエンコードされます。

別の場所で文字列のように扱っている必要があります。

> (string)array("a","b")
! Array to string conversion
string(5) "Array"

また、なぜ に 2 つの成功コールバックがあるの$.postですか? 3 番目の引数は成功のコールバックで、 と同じように機能し.doneます。どちらか一方を使用してください (私は をお勧めしdoneます) が、両方は使用しないでください。

json最後の引数 (dataType) として渡すことを検討して、jQuery が何を予期するかを認識し、結果を適切にデコードできるようにすることもできます。

于 2013-08-13T16:40:22.660 に答える
0

このようなことをしてみてください:

$.post(url,{contentVar:cv}
   function(response)
   {
      alert(response[0]);
   },'json'
);
于 2013-08-13T16:39:53.703 に答える