我正在使用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);
}
});
在控制器中,我编码然后解码..它工作 谢谢:))
答案 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;
<强>更新
您已在问题中更新过的第二个解决方案。