0

这是我的 jscript 代码:当我运行它时,我没有得到任何响应,并且 firefox webconsole 显示正常

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)}
    });}); }); 

捕获.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) 我也无法定义它似乎没有发送

GRT罗伯特

4

2 回答 2

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 },
          ...
      });
   });
});

另请注意,当您使用GETurl 参数发送数据时,$_POST显然是空的。然而,json_decode($_GET['namef']);应该给你你想要的对象。

于 2012-07-20T11:06:51.230 回答
1

您正在使用类型:“GET”,请尝试:

var_dump($_GET);
于 2012-07-20T11:05:30.893 回答