Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON和反斜杠_Javascript_Asp.net Mvc_Json - Fatal编程技术网

Javascript JSON和反斜杠

Javascript JSON和反斜杠,javascript,asp.net-mvc,json,Javascript,Asp.net Mvc,Json,有谁能解释一下为什么我的JSON会在下面加上反斜杠。我正在使用ASP.net MVC序列化一个数据表,当我在Visual studio中调试时,一切看起来都正常,但是当我使用firebug添加额外字符时 有什么想法吗 JSON [{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\",\"first_name\":\"Daniel\",\"last_name\":\"James\",\"fql_query_response_Id\":0

有谁能解释一下为什么我的JSON会在下面加上反斜杠。我正在使用ASP.net MVC序列化一个数据表,当我在Visual studio中调试时,一切看起来都正常,但是当我使用firebug添加额外字符时

有什么想法吗

JSON

[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\",\"first_name\":\"Daniel\",\"last_name\":\"James\",\"fql_query_response_Id\":0,\"LIFEID\":null}
JAVASCRIPT

function GetFBFriends() {
  FB.Connect.requireSession(function() {
    $.ajax({
      url: "/Facebook/GetFaceBookFriends",
      type: 'POST',
      data: null,
      dataType: 'json',
      success: function(result) {
        data = "<table>";
        alert(result.length);
        for (i = 0; i < result.length; i++) {
          data += "<tr><td><td><img src=" + result[i].pic + " alt=" + result[i].first_name + " /></td><input type='checkbox' value='" + result[i].uid + "' name='friends[]' id = 'friend" + result[i].uid + "' /></td><td>" + result[i].first_name + " " + result[i].last_name + "</td></tr>";
        }
        data += "</table>";;
      }
    });
  })
};

看起来Firebug正在添加转义字符。如果用单引号将整个JSON括起来会怎么样?这可能会解决问题。你能提供编码JSON的代码吗?

这是Firebug,它在字符串表示中显示包含JSON的字符串。可以将其视为JSON编码一个包含JSON的字符串。或者更确切地说,如果将JSON放在Javascript中的字符串文字中,它会是这样的


您的字符串实际上不包含这些反斜杠。它们只是双引号的转义。

我建议在success函数的第一行中注入以下内容

console.dir({'result':result});
这将向您显示返回的内容,而不仅仅是查看网络呼叫的结果

Firebug显示只是转义字符串,因此您可以将整个结果复制/粘贴到控制台中,以便直接进行检查/查询

var temp = {pasted-string-here}
//var temp = "[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\", ... }]"
var val = JSON.parse(temp);
console.debug({"val":val});

我解决了这个问题,我返回了JSON数据,然后jquery也将其转换为JSON,所以我只返回了一个字符串,jquery正确地处理了它。

当JSON被拆分为300个字符而不是两行时,它看到了这些反斜杠。JSON看起来不错,所以可能是出了什么问题?你能举个例子说明你是如何使用JSON的吗?我刚刚在原始问题中添加了JS。“[{“uid”:“516219026”,“pi…e_Id”:0,“LIFEID”:null}]”这就是我得到的?是的,这就是你真正得到的。firebug UI只是为您转义内部引号,因此您可以剪切/粘贴到js控制台中。
var temp = {pasted-string-here}
//var temp = "[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\", ... }]"
var val = JSON.parse(temp);
console.debug({"val":val});