Jquery.ajax不能解析json对象,报Invalid JSON错误的原因和解决方法

我们知道Invalid JSON错误导致的json对象不能解析,一般都是服务器返回的json字符串的语法有错误。这种情况下,我们只需要仔细的检查一下json就可以解决问题。

下面说一下,最近在使用jquery 1.4中使用$.ajax()方法解析json对象遇到的问题。

 

Json对象是:

 [{name:'二手房出售',infoCount:0,pageUrl:'/ershoufang'},{name:'二手房求购',infoCount:0,pageUrl:'/qiugou'},{name:'二手房装修',infoCount:0,pageUrl:'/esfzhuangxiu'},{name:'二手回收',infoCount:0,pageUrl:'/huishou'},{name:'二手摩托车',infoCount:0,pageUrl:'/motor'},{name:'二手汽车求购',infoCount:0,pageUrl:'/ershoucheqg'},{name:'二手汽车转让',infoCount:9,pageUrl:'/ershouche'},{name:'二手市场',infoCount:0,pageUrl:'/ershoushichang'}]

 

不知道大家有没有发现这段json对象的问题。这样的写法在js脚本和jquery 1.4之前的版本都是没有问题的。因为在1.3及更早版本中,jQuery通过javascript的eval方法来解析json对象。在1.4中,jQuery使用了更严格的方法来解析json。所有的内容都必须使用双引号。

 

这点从jQuery.parseJSON(json) 可以看出,parseJSON在文档中的解释是:

接受一个JSON字符串,返回解析后的对象。

传入一个畸形的JSON字符串会抛出一个异常。比如下面的都是畸形的JSON字符串:
{test: 1} ( test 没有包围双引号)
{'test': 1} (使用了单引号而不是双引号)

另外,如果你什么都不传入,或者一个空字符串、null或undefined,parseJSON都会返回 null 。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,假设 `names.json` 文件中的数据格式如下: ``` { "users": [ { "username": "user1", "password": "pass1" }, { "username": "user2", "password": "pass2" }, { "username": "user3", "password": "pass3" } ] } ``` HTML: ``` <form id="login-form"> <label for="username">Username:</label> <input type="text" id="username" name="username"> <br> <label for="password">Password:</label> <input type="password" id="password" name="password"> <br> <input type="submit" value="Submit"> </form> ``` JavaScript: ``` $(document).ready(function() { $('#login-form').submit(function(event) { event.preventDefault(); // 防止页面刷新 var username = $('#username').val(); var password = $('#password').val(); $.ajax({ url: 'names.json', dataType: 'json', success: function(data) { var users = data.users; var validUser = false; for (var i = 0; i < users.length; i++) { if (users[i].username === username && users[i].password === password) { validUser = true; break; } } if (validUser) { alert('Login successful'); } else { alert('Invalid username or password'); } } }); }); }); ``` 在这个例子中,我们使用 jQuery 的 `$.ajax()` 方法来获取 `names.json` 文件中的数据。当用户提交表单时,我们获取输入的用户名和密码,然后在 `$.ajax()` 方法的 success 回调函数中,遍历 `users` 数组,检查输入的用户名和密码是否与数组中的某个对象匹配。如果找到了匹配项,则将 `validUser` 标记设置为 `true`。最后,根据 `validUser` 的值,显示适当的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值