Javascript PHP的JS文本数组
在JS中,我有以下内容:Javascript PHP的JS文本数组,javascript,php,arrays,Javascript,Php,Arrays,在JS中,我有以下内容: var languages = [{ language: "da" listening: "A1" }, { language: "en" listening: "B2" }]; 在PHP中,在调用$之后,我得到的结果是: array(4) { [0]=> array(1) { ["language"]=> string(2) "da" } [1]=> array(1) {
var languages = [{
language: "da"
listening: "A1"
}, {
language: "en"
listening: "B2"
}];
在PHP中,在调用$之后,我得到的结果是:
array(4) {
[0]=>
array(1) {
["language"]=>
string(2) "da"
}
[1]=>
array(1) {
["listening"]=>
string(2) "A1"
}
[2]=>
array(1) {
["language"]=>
string(0) "en"
}
...
}
我需要的是这样的东西:
array(2) {
[0]=>
array(2) {
["language"]=>
string(2) "da",
["listening"]=>
string(2) "A1"
}
[1]=>
array(2) {
["language"]=>
string(2) "en",
["listening"]=>
string(2) "B1"
}
}
var languages = [{
language: "da"
listening: "A1"
}, {
language: "en"
listening: "B2"
}];
有没有一种简单的方法可以做到这一点?我必须迭代并处理它吗?使用JSON。stringify
对数据结构进行编码,将结果字符串作为单个参数发送,然后用PHP中的JSON\u decode($JSON,true)
对其进行解码
JS
var data = [
{ language: "da", listening: "A1"},
{ language: "en", listening: "B2"}
];
// ...
$.post(url, { data: JSON.stringify(data) }, function() { ... });
PHP
if (isset($_POST['data'])) {
$data = json_decode($_POST['data'], true);
// process this array of arrays
}
使用JSON.stringify
对数据结构进行编码,将结果字符串作为单个参数发送,然后使用PHP中的JSON\u decode($JSON,true)
对其进行解码
JS
var data = [
{ language: "da", listening: "A1"},
{ language: "en", listening: "B2"}
];
// ...
$.post(url, { data: JSON.stringify(data) }, function() { ... });
PHP
if (isset($_POST['data'])) {
$data = json_decode($_POST['data'], true);
// process this array of arrays
}
我想你的意思是这样的:
array(2) {
[0]=>
array(2) {
["language"]=>
string(2) "da",
["listening"]=>
string(2) "A1"
}
[1]=>
array(2) {
["language"]=>
string(2) "en",
["listening"]=>
string(2) "B1"
}
}
var languages = [{
language: "da"
listening: "A1"
}, {
language: "en"
listening: "B2"
}];
实际上有两个对象要传输到PHP,打包到一个数组中,对吗?。尝试使用JSON:
创建JSON字符串并将其发送到服务器:
$.ajax({
url: '...',
type: 'POST',
data: { json: JSON.stringify(languages)}
});
在服务器端,您现在将在$_POST['json']中拥有json字符串,您可以使用以下代码对其进行解码:
json_decode($_POST['json'], true);
获取(多维)数组,或
json_decode($_POST['json']);
对于包含两个对象的数组
编辑
如果打开了“魔法引号”,则必须先去掉反斜杠:
json_decode(stripslashes($_POST['json']), true);
嗯,我想你的意思是这样的:
array(2) {
[0]=>
array(2) {
["language"]=>
string(2) "da",
["listening"]=>
string(2) "A1"
}
[1]=>
array(2) {
["language"]=>
string(2) "en",
["listening"]=>
string(2) "B1"
}
}
var languages = [{
language: "da"
listening: "A1"
}, {
language: "en"
listening: "B2"
}];
实际上有两个对象要传输到PHP,打包到一个数组中,对吗?。尝试使用JSON:
创建JSON字符串并将其发送到服务器:
$.ajax({
url: '...',
type: 'POST',
data: { json: JSON.stringify(languages)}
});
在服务器端,您现在将在$_POST['json']中拥有json字符串,您可以使用以下代码对其进行解码:
json_decode($_POST['json'], true);
获取(多维)数组,或
json_decode($_POST['json']);
对于包含两个对象的数组
编辑
如果打开了“魔法引号”,则必须先去掉反斜杠:
json_decode(stripslashes($_POST['json']), true);
您好,您好:
我想你应该试着做以下几点
{
"languages": [
{"language":"da","listening":"A1"},
{"language":"en", "listening":"B2"}
]
}
您好:
我想你应该试着做以下几点
{
"languages": [
{"language":"da","listening":"A1"},
{"language":"en", "listening":"B2"}
]
}
我从JS控制台粘贴,你是对的:一个对象数组。Christian David,我收到一个转义的JSON字符串
,但是在运行JSON\u decode
之后,一个var\u dump
输出NULL
。嗨,你能检查是否有错误吗?如果您有PHP5.3,可以使用www.php.net/json_last_error。请从$\u POST['json']中转储json字符串,可能有一些特殊字符,例如引用的斜杠?啊,所以请尝试json解码(stripslashes($\u POST['json']),true),这将删除“\”并生成有效的json字符串。编辑:选中此项以了解这些反斜杠的来源:!这成功了!现在我有了一个数组(数组(“语言”=>string(2)…“da”,数组(),…)
我从JS控制台粘贴,你是对的:一个对象数组。Christian David,我收到一个转义的JSON字符串
,但是在运行JSON_decode
之后,一个var_dump
输出NULL
。嗨,你能检查是否有错误吗?如果你有PHP5.3,你可以使用www.php.net/JSON_last_errore从$\u POST['json']中转储json字符串,可能有一些特殊字符,例如引用的斜杠?啊,所以请尝试json解码(stripslashes($\u POST['json']),true),这应该删除“\”并生成有效的json字符串。编辑:检查此项以了解这些反斜杠的来源:!这起作用了!现在我有了一个数组(数组)(“language”=>string(2).“da”,array(),…)
raina77ow,json\u decode
需要一个字符串作为第一个参数,似乎$\u POST['data']
获取为数组
@jima:很惊讶它竟然以数组的形式出现…而不是jibberish.Raina77ow,你忘记了JSON.stringify你的数据变量当你坚持到request@user1600124没错,这里应该使用JSON.stringify;如果没有它,则使用对象数组(由编码)将改为发送。@jima检查更新的代码,奇怪的是我没有按照自己的建议,不知怎的认为jQuery无论如何都会序列化数据。)确实是这样,但是使用它自己的方法-$.param-notJSON.stringify
,这就是为什么你得到的是数组,而不是字符串。谢谢你的建议,检查正确的答案,我必须使用JSON解码(stripslashes($\u POST['JSON']),true)
raina77ow,json\u decode
需要一个字符串作为第一个参数,似乎$\u POST['data']
获取为数组
@jima:很惊讶它竟然以数组的形式出现…而不是jibberish.Raina77ow,你忘记了JSON.stringify你的数据变量当你坚持到request@user1600124没错,这里应该使用JSON.stringify;如果没有它,则使用对象数组(由编码)将改为发送。@jima检查更新的代码,奇怪的是我没有按照自己的建议,不知怎的认为jQuery无论如何都会序列化数据。)确实是这样,但是使用它自己的方法-$.param-notJSON.stringify
,这就是为什么你得到的是数组,而不是字符串。谢谢你的建议,检查正确的答案,我必须使用JSON解码(stripslashes($\u POST['JSON']),true)
如果您提供这个文本输出,并且是json格式的,请记住,json最终是一个格式良好的字符串,用于您正在使用的编码中的Javascript对象表示法,您不需要在php中进行编码,如果您想使用ajax,并且您知道您将获得json输出,我建议使用方法$。jsonIt更像是一个p在PHP中解释it
的问题。我通过ajax
从JS发送stuff
。问题是如何理解我在服务器上接收到的内容。因此,如果我发送JS对象,PHP会“混乱”“他们。如果我发送一个JSON,然后用PHP进行解码,我会得到与JS等价的东西,但是是用PHP。我认为你的解决方案不会解决这个问题,因为它包含的是JS对象/数组,而不是JSON(字符串)。如果你给出这个文本输出,并且是JSON格式的,请记住,在你使用的编码中,JSON最终是Javascript对象表示法的格式良好的字符串,你不需要这样做