jQuery奇怪的JSON行为
jQuery weird JSON behaviour
我得到一个选定复选框的数组,并将它们推送到一个数组中。
之后,我JSON.stringify()
数组并将其发送到我的PHP脚本。
但奇怪的是,当我发送数组变量时,它会返回奇怪的东西。
这是代码:
var _items = new Array();
$('input:checkbox:checked.item').each(function () {
_items.push($(this).val());
});
$.ajax({
type: 'POST',
url: btn.data('url'),
data: {_token: token, items: JSON.stringify(_items)},
dataType: 'json',
success: function () {
//
}
})
当我控制台记录`_items变量时,我会得到一个数组,其中包含如下所选的框:
["3", "4"]
在我的PHP中我做:
dd(json_decode(Input::get('items')));
但奇怪的是,_items
变量在我的PHP脚本中返回了一个数组:
0: 2
1: 0
2: 3
3: 1
4: 1
5: 4
6: 1
当我手动创建_items
变量时,如下所示:var _items = ["3", "4"];
它确实返回了正确的数组。。
编辑:当我尝试将其作为数组发送时,它将返回与上面的strange thing
相同的结果。。
EDIT2:用于打印PHP数组的代码。我用laravel捕捉到了路由(这是正常工作的),然后我死并转储(dd)输入。与$_POST['items']
:相同
Route::post('user/destroy/multiple', function () {
dd(json_decode(Input::get('items')));
});
EDIT3:奇怪的是,当我输出Input::get('items')
时,它确实返回了一个JSON字符串,但由于某种原因,我无法对其进行JSON_decode。
代码可能有什么问题。。。?
来源http://laravel.com/docs/4.2/requests:
注意:一些JavaScript库(如Backbone)可能会将输入发送到应用程序作为JSON。您可以通过输入访问这些数据:典型的
因此,在您的JavaScript中,您应该执行以下操作:
$.ajax({
type: 'POST',
url: btn.data('url'),
data: {_token: token, items: _items},
dataType: 'json',
success: function () {
//
}
})
在PHP中你应该做:
Route::post('user/destroy/multiple', function () {
dd(Input::get('items'));
});
问题是,您在javascript代码中将数组编码为Json,您不必这样做,只需发送数组本身,Ajax调用就会为您编码。通过这样做,您将把数组编码为Json的两倍!用data: {_token: token, items: _items},
替换data: {_token: token, items: JSON.stringify(_items)}
您想要序列化对象,而不是数组
更改您的代码:
var _items = {};
和类似的东西
$('input:checkbox:checked.item').each(function (i,v) {
_items[i] = v;
});
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 奇怪的javascript行为-JSON.parse:意外字符
- JSON.parse:网络上的不同行为
- JSON.stringify 的行为因两个不同的页面上下文而异
- 序列化的 JSON 在调用 Web 服务时行为奇怪
- 带有 JSON 返回的 AJAX 请求没有响应我的预期行为
- js中奇怪的JSON解析行为,“意外令牌:”
- JSON字符串化奇怪的行为
- jQuery奇怪的JSON行为
- JSON中的意外行为.解析Reviver函数,删除对象而不是关键属性
- 在AngularJS中使用JSON中的深度嵌套对象——奇怪的行为
- JSON.stringify第三个参数的行为
- Json的意外行为