0

これは私の jscript コードです: 実行すると応答がなく、Firefox Web コンソールが正常に表示されます

dataS = friendMediaArray; // array?
var jsonS = JSON.stringify(dataS);
$(function() { 
   $("#xbut").click(function() { 
      var data = {}; 
      data.dataArray = friendMediaArray; // I'm setting it as a property here 

      var jsonS = JSON.stringify(data); 
      jQuery.ajax({ 
          type: "GET", 
          data: {type: "stream", namef: jsonS }, 
          url: 'catch.php', 



        success: function (msg) 
                { alert("OK");alert(data); console.log(data); },
        error: function (err)
        { alert(err.responseText)}
    });}); }); 

catch.php

<?php 
if($_GET['type']=='stream'){ 
     $obj = json_decode($_GET['namef']); 
   for($i=0;$obj[$i];$i++){ 
    echo $obj[$i]->{'namef'}." "; 
    } 
} 

json_decode($_GET['namef']); 

?> 

var_dump($_POST) でも undefined になります。何も送信されていないようです

GRT ロバート

4

2 に答える 2

1

タイプ「GET」を使用しています。試してください:

var_dump($_GET);
于 2012-07-20T11:05:30.893 に答える
1
dataString = friendMediaArray; // array?

データが配列の場合、「文字列」という名前を付けるべきではありません!

var jsonString = JSON.stringify(dataString);

さて、あなたjsonStringは実数の文字列であり、

jsonString[field.name] = field.value; 

結果は何もありません。プリミティブ文字列値のプロパティを設定することはできません。代わりに、それらをオブジェクトのプロパティとして設定する必要があります。これにより、シリアル化できます。

$(function() {
   $("#xbut").click(function() {
      var data = {};
      data.dataArray = friendMediaArray; // I'm setting it as a property here
      $.each($(':input').serializeArray(), function(i,field){
           data[field.name] = field.value; 
      });
      var jsonString = JSON.stringify(data);
      jQuery.ajax({
          type: "GET",
          data: {type: "stream", namef: jsonString },
          ...
      });
   });
});

GETまた、url パラメータとしてデータを送信すると、$_POST明らかに空になることにも注意してください。それでも、json_decode($_GET['namef']);必要なオブジェクトが得られるはずです。

于 2012-07-20T11:06:51.230 に答える