标签为 "Ajax" 的存档

jquery ajax get success not called; ajax调用返回200,但是没有调用success的问题

管理后台不知道为啥出了点小bug,以前管用的一个功能突然不能用了,看了下数据接口是调用成功了,大周末的,又不好麻烦FE,只好自己看看了。

通过查看源代码发现,使用了jquery里的ajax方法,通过get回来的结果并没有按预期的执行success回调。

  $.ajax({
      url: '/antispammanage/filterSpecial/?kw='+encodeURIComponent(kw),
      type: 'get',
      dataType: 'json',
      success: function(data){
          var d = JSON.parse(data.trim());
          $('.producekw').val(d.kw);
      }

查看网络请求,接口是返回成功的。
然后对该方法添加了error回调,打印出返回信息,readystate=4,返回头是200,但是为啥就不success呢。

google了下后发现,原来问题出在返回信息的content-Type上,返回的不是json类型,但是ajax方法里指定了类型为json,所以ajax方法在解析json的时候出错了。解决办法有两个:
1.接口返回的header里指定content-Type为json,
2.ajax调用的时候,指定dataType为text,然后自己用JSON.parse进行解析。

jquery用$.each处理返回的json数据

jquery用$.each处理返回的json数据:
例如,json数据如下:

[ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "beauty"}
]

希望用jquery对此数据进行操作,使用$.each:

$.each(data, function(i, item) {
    alert(item.PageName);
});

本人亲测可行。
Read more…

AJAX readyState的五种状态及其含义

AJAX readyState的五种状态及其含义:
0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.

0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

Read more…

json验证,json串可用性测试,如何查看所构造的json是否可以使用?

http://www.jsonlint.com/

只要打开这个网址,将构造出来的字符串放到里面,点击 Validate ,稍等片刻,马上就可以看到结果啦。而且还会给你格式化,看起来也很方便,实在是Jquery,Ajax之居家必备啊。