0

I am not that good at ajax, javascript and so on.

I echoed from my PHP file 2 JSON arrays:

{key":"R\/EPspiig3jNffjjE6YWTsB+rsdlCjqnm1LExC\/vJXE=","nonce":"1aab51c5d8b23b7c110ae3f2a2d440bf0797750c85bd1602e8d57c357f34dab9"}

and

{"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"}

in my ajax i have this :

success: function(data) {

           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 = 'נעול';

         }

this the problem :

$("#nonce").val(data[1].nonce);
             $("#key").val(data[1].key);

how i using that ,because i have 2 arrays anyway i using parse and handle 2 arrays this way ? like data[0] = array 1 and data[1] = array 2 ?

4

1 回答 1

0

首先,检查.responseText您的 Ajax 请求对象 ( HttpRequestObject) 的属性,如下所示:

alert(request.responseText)

如果看起来正确,那么您已经将两个数组混合在一起了。您需要使用.split()和一些字符模式(:::例如我使用的)将它们分开:

twoarrays = request.responseText.split(":::");

现在,您在地址[0][1]in 中有两个 JSON 格式的字符串twoarrays。用于.parse()将每一个转换回数组。

如果你不明白我在说什么,是时候做一些研究了。这不是什么棘手的事情,你只需要花一些时间把它放在脑海中。


(旧答案)

如果您的意思是Javascript方面,那么

yourstring.parse()

应该可以正常工作(在 JavaScript 中解析 JSON?)。

您可能需要.split()使用换行符或其他内容来响应:

twoarrays = request.responseText.split("\n");
array1 = twoarrays[0].parse();
array2 = twoarrays[1].parse();

如果您的意思是PHP方面,那么您可以使用json_decode($yourstring, true)它将JSON 解析为关联数组(使用名称而不是数字作为地址的数组)。

仅供参考,json_encode($yourarray)会适得其反。

于 2013-08-11T04:47:54.460 回答