我在ajax,javascript等方面并不擅长。
我回复了我的PHP文件2 JSON数组:
{key":"R\/EPspiig3jNffjjE6YWTsB+rsdlCjqnm1LExC\/vJXE=","nonce":"1aab51c5d8b23b7c110ae3f2a2d440bf0797750c85bd1602e8d57c357f34dab9"}
和
{"error":1,"message":"\u05d4\u05d0\u05d9\u05de\u05d9\u05d9\u05dc \u05e9\u05d4\u05d6\u05e0\u05ea \u05e9\u05d2\u05d5\u05d9 \u05d0\u05d5 \u05dc\u05d0 \u05ea\u05e7\u05d9\u05df \u05e0\u05e1\u05d4 \u05e9\u05d5\u05d1 ,\u05d0\u05e0\u05d0 \u05d4\u05db\u05e0\u05e1 \u05e1\u05d9\u05e1\u05de\u05d0"}
在我的ajax中我有这个:
成功:功能(数据) {
obj = JSON && JSON.parse(data) || $.parseJSON(data);
if(data[0].login == true)
{
window.location = "index.php";
}
else
{
$("#siimage").trigger("click");
$("form input:submit").effect("shake", {times:2}, 100);
$("#errorMessage").html(data[0].message);
$("#nonce").val(data[1].nonce);
$("#key").val(data[1].key);
}
if(data.cblocked == true)
{
$("#email").prop('disabled', true);
$("#password").prop('disabled', true);
$('input[type="submit"]').attr('disabled','disabled');
document.getElementById("Submit").value = 'נעול';
}
if(data.csrf == true)
{
$("#email").prop('disabled', true);
$("#password").prop('disabled', true);
$('input[type="submit"]').attr('disabled','disabled');
document.getElementById("Submit").value = 'נעול';
}
这个问题:
$("#nonce").val(data[1].nonce);
$("#key").val(data[1].key);
我是如何使用它的,因为我有2个数组,无论如何我使用parse并以这种方式处理2个数组?像data [0] = array 1和data [1] = array 2?
答案 0 :(得分:0)
首先,检查Ajax请求对象的.responseText
属性(HttpRequestObject
),如下所示:
alert(request.responseText)
如果看起来正确,你就有两个阵列混合在一起了。您需要使用.split()
和一些字符模式(例如我使用:::
)拆分它们:
twoarrays = request.responseText.split(":::");
现在,您在[0]
中的地址[1]
和twoarrays
处有两个JSON格式的字符串。使用.parse()
将每个转换回数组。
如果你不明白我在说什么,那你就该做一些研究了。这不是一件棘手的事情,你只需要花些时间把它弄到头脑中。
(旧回答)
如果您指的是 Javascript 方面,那么
yourstring.parse()
应该可以正常工作(Parse JSON in JavaScript?)。
您可能需要使用换行符.split()
回复:
twoarrays = request.responseText.split("\n");
array1 = twoarrays[0].parse();
array2 = twoarrays[1].parse();
如果您指的是 PHP 方面,那么您可以将json_decode($yourstring, true)
parses the JSON用于关联数组(具有名称而不是地址数字的数组)。
仅供参考,json_encode($yourarray)
将采取相反的行动。