ajax传递字符串获取数组

时间:2016-02-16 09:57:26

标签: php jquery ajax laravel-5.2

我正在使用Laravel Framework,并且我正在尝试创建Ajax请求,因此我可以将表单数据发送到Controller。 问题是,我传递了一个字符串,但在控制器中,当我尝试JSON_decode时,它说我给它一个数组而不是一个字符串。 我做错了什么?

查看(ajax)

function getData() {
   var name = $('#name').val();
   var tin = $('#tin').val();
   var password = $('#password').val();
   var currency = $('#currency').val();

   var data = {"name": name, 'tin': tin, 'password': password, 'currency': currency};
   var obj = JSON.stringify({"name": name, 'tin': tin, 'password': password, 'currency': currency});
   console.log(obj);
   $.ajax({
      type: "POST",
      url: "teste",
      data: obj,
      success: function (result) {
        alert(result);
      }
   });
}

控制器:

 $data = $_POST;
    //$string = json_encode($data);
    $test = json_decode($data);
    echo $test->name ;
    //echo "data: $string, gravada com sucesso!";
    die;

如果有人可以帮助我......

刚刚解决了。

$.ajax({ 
   type: "POST",
   url: "teste",
   data: {"name": name, 'tin': tin, 'password': password, 'currency': currency},
   success: function (result) {
      alert(result);
    }
});

在控制器中,我编码然后解码..它工作 谢谢:))

2 个答案:

答案 0 :(得分:1)

无需使用JSON.stringify

删除JSON.stringify并直接通过data

或者如果你想以json格式阅读,那么

url: "1.php", data: {"key":obj},

答案 1 :(得分:1)

在您的示例中,如果要传递json字符串,则需要将 OBJ 作为参数传递:

<script type="text/javascript">
var data = {"name": name, 'tin': tin, 'password': password, 'currency': currency};
var obj = JSON.stringify({"name": name, 'tin': tin, 'password': password, 'currency': currency});

$.ajax({
type: "POST",
url: "<?=g('base_url')?>home/index",
data: "obj="+obj, // add as a param
success: function (result) {
alert(result);
}
});
</script>

在PHP中,您可以在$_POST中获取对象:

$data = $_POST['obj'];
$test = json_decode($data);
echo $test->name;

<强>更新

您已在问题中更新过的第二个解决方案。