解决方法
解析一下
您可以使用parseInt()
更好地处理数字解析。否则返回一个成功的数字和NaN(不是数字)。
var a = parseInt('23'); isNan(a); // false var b = parseInt('ab'); isNan(b); // true
为什么在jQuery中返回1
如果你看看jQuery方法的来源,它将会很快变得清晰。
>它将检查是否有原生支持JSON.parse。
>如果没有,它将创建一个匿名函数(带字符串体),它只返回JSON字符串中包含的数据并调用它。
所以如果在你的情况下,步骤2.执行它将简单地返回1,即使它不是真正的JSON。
更新:
我很好奇当地的JSON.parse would handle it和它做的同样的事情(返回1)。所以无论实现如何,你总是得到相同的结果。
显示图书馆:http://code.jquery.com/jquery-1.8.3.js
parseJSON: function( data ) { if ( !data || typeof data !== "string") { return null; } // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); // Attempt to parse using the native JSON parser first if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); } // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js if ( rvalidchars.test( data.replace( rvalidescape,"@" ) .replace( rvalidtokens,"]" ) .replace( rvalidbraces,"")) ) { return ( new Function( "return " + data ) )(); // Just returns JSON data. } jQuery.error( "Invalid JSON: " + data ); },