`
king_tt
  • 浏览: 2122176 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用jQuery ajax post方法从Servlet获取json post方法中callback function不调用

 
阅读更多

这次做的项目是一个通过google API来实现图片搜索的web应用。该项目是由Servlet获得浏览器用户输入,通过googleAPI进行查询,获取google返回的json 字符串,最后返回给浏览器。

本来流程应该没有问题,浏览器端的提交和响应通过firebug来看也是正常的,但post函数中注册的callback function一直不能被调用,之前在Servlet中已经设定 response.setContentType=("application/json; charset=utf-8"); 经过N次调试后终于发现原来是我在Servlet中response给浏览器的值不对。

原来,之前我一直以为Servlet response给浏览器的json和以前的text/html一样都是字符串,所以我将获取的json字符串response给了浏览器。但实际上应该response的是一个JSONObject对象,或者是经过gson处理的String。


正确形式应该为:

try {
	JSONObject json = new JSONObject(buffer.toString());
	resp.setContentType("application/json; charset=utf-8");
	resp.setHeader("pragma", "no-cache");
	resp.setHeader("cache-control", "no-cache");

	PrintWriter out = resp.getWriter();
	out.println(json);
	out.flush();
} catch (JSONException e) {
	e.printStackTrace();
}

或者使用gson将获取的String转换为格式正确的json 字符串

	Gson gson = new Gson();
	String jsonResult = gson.toJson(buffer.toString());
		
	resp.setContentType("application/json; charset=utf-8");
	resp.setHeader("pragma", "no-cache");
	resp.setHeader("cache-control", "no-cache");

	PrintWriter out = resp.getWriter();
	out.println(jsonResult);
	out.flush();


分享到:
评论

相关推荐

    unigui_ajax Post Callback -返回参数 HTMLFrame 事件_1

    unigui_ajax Post Callback -返回参数 HTMLFrame 事件_1 基础篇

    jquery利用ajax调用后台方法实例

    代码如下:语法:$(function(){ var callback = function(r){ //r表示后台数据返回的数据. } $.get(“”,callback); //引号里面写方法的路径});这样就可以得到后台方法得到的数据显示在html前端了. 以下是工作中...

    jquery ajax结合thinkphp的getjson实现跨域的方法

    jquery中post的应该是不能跨域,网上说get的可以跨域,但是我试了一下也不行,然后就进行最后的拼搏getjson,结果成功,哈哈 js处写作: $.getJSON( "/index.php/Index/test", function(data){ alert(data.dd&#41...

    jquery中AJAX请求 $.post方法的使用

    使用jQuery的$.post方法可以以POST形式向服务器发起AJAX请求。$.post方法是jQuery的实用工具方法。 post和get发送方式的特点, GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见; GET 方法提交的数据大小...

    jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解

    当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问题,更幸福的是你的js代码将大大地...

    创建公共调用 jQuery Ajax 带返回值

    代码如下: [removed] /* 请求Ajax 带返回值,并弹出提示框提醒 ————————————————–*/ function getAjax(url, parm, callBack) { $.ajax({ type: ‘post’, dataType: “text”, url: url, data: ...

    jquery插件使用方法大全

     代码 $("selector").load(url,data,function(response,status,xhr)) 该方法是最简单的从服务器获取数据的方法。它几乎与 $.get(url, data, success) 等价,不同的是它不是全局函数,并且它拥有隐式的回调函数。当...

    jQuery+ajax中getJSON() 用法实例

    在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 “myurl?callback=?”。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 注意:此行以后的代码将在这个回调函数执

    javascript jQuery $.post $.ajax用法

    jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对...

    json+callback实现无刷新demo

    json+callback实现无刷新demo,短小精悍

    jquery-1.1.3 效率提高800%

    在jQuery 1.2版本中,如果你指明了一个JSONP回调函数,你就可以从其它的域中载入JSON类型的数据,写法类似于 "myurl?callback=?" 。jQuery会自动调用正确的方法名称来代替查询字符串,执行你指定的回调函数。...

    net+jquery+json实现ajax

    要解决的问题是使用jQuery.getJSON(url,[data],[callback])方法中url,即要获取前台处理数据的地址。因为以前有过开发GIS的经验,所以知道一般GIS的解决方案是通过调用“一般处理程序”即以.ashx结尾的文件,它实际...

    Jquery解析json数据详解

    最近被jquery折磨了一番,倒腾了一个jquery解析json的demo,本demo想实现从asp.net后台实例化dataSet或者dataTable数据集,将dataSet转换成json并返回给客户端,客户端用jquery getJson方法解析出来并显示在页面上。...

    jQuery Ajax异步处理Json数据详解

    先我们来看一个官方的实例使用 AJAX 请求来获得 JSON 数据,并输出结果: 代码如下:$(“button”).click(function(){ $.getJSON(“demo_ajax_json.js”,function(result){ $.each(result, function(i, field){ $...

    jQuery Ajax Post 回调函数不执行问题的解决方法

    今天在写一个检查用户名的功能时,使用的是jQuery.post( url, [data], [callback], [type] )这个函数,但是发现其中的回调函数不能执行。 先来看看我的代码: 前台代码: [removed] function checkUser() { var ...

    jQuery中Ajax的get、post等方法详解

    load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值。 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或者是$.ajax()方法) $.get()方法...

    jQuery 1.4.1 中文参考

    10.1.6 jQuery.post(url, [data], [callback], [type]) 174 10.2 Ajax 事件 175 10.2.1 ajaxComplete(callback) 175 10.2.2 ajaxError(callback) 175 10.2.3 ajaxSend(callback) 176 10.2.4 ajaxStart(callback) 176...

    Ajax请求session超时处理流程

    自己写一个loadUrl()方法,不能使用jquery自带的load(). 当客户端调用loadUrl()超时,弹出一个登录框,并加一个背景层下面的整个浏览器.这时浏览器窗口内容不能变,只是上面加了一个登录框和一个背景层 当...

    jQuery Ajax()方法使用指南

    在Ajax方面,jQuery除了提供底层的jQuery.ajax()方法外,也提供了下面的简单方法: (1) jQuery.get(url, [data], [callback], [type]) (2) jQuery.getJSON(url, [data], [callback]) (3) jQuery.getScript...

    jQuery Ajax之load()方法

    load()方法是jQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入到DOM中。它的语法结构为:  load( url [, data][, callback] )  load()方法参数解释见下表: 参数名称 类 型 说 明 url String ...

Global site tag (gtag.js) - Google Analytics