这次做的项目是一个通过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 基础篇
代码如下:语法:$(function(){ var callback = function(r){ //r表示后台数据返回的数据. } $.get(“”,callback); //引号里面写方法的路径});这样就可以得到后台方法得到的数据显示在html前端了. 以下是工作中...
jquery中post的应该是不能跨域,网上说get的可以跨域,但是我试了一下也不行,然后就进行最后的拼搏getjson,结果成功,哈哈 js处写作: $.getJSON( "/index.php/Index/test", function(data){ alert(data.dd)...
使用jQuery的$.post方法可以以POST形式向服务器发起AJAX请求。$.post方法是jQuery的实用工具方法。 post和get发送方式的特点, GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见; GET 方法提交的数据大小...
当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问题,更幸福的是你的js代码将大大地...
代码如下: [removed] /* 请求Ajax 带返回值,并弹出提示框提醒 ————————————————–*/ function getAjax(url, parm, callBack) { $.ajax({ type: ‘post’, dataType: “text”, url: url, data: ...
代码 $("selector").load(url,data,function(response,status,xhr)) 该方法是最简单的从服务器获取数据的方法。它几乎与 $.get(url, data, success) 等价,不同的是它不是全局函数,并且它拥有隐式的回调函数。当...
在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 “myurl?callback=?”。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 注意:此行以后的代码将在这个回调函数执
jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对...
json+callback实现无刷新demo,短小精悍
在jQuery 1.2版本中,如果你指明了一个JSONP回调函数,你就可以从其它的域中载入JSON类型的数据,写法类似于 "myurl?callback=?" 。jQuery会自动调用正确的方法名称来代替查询字符串,执行你指定的回调函数。...
要解决的问题是使用jQuery.getJSON(url,[data],[callback])方法中url,即要获取前台处理数据的地址。因为以前有过开发GIS的经验,所以知道一般GIS的解决方案是通过调用“一般处理程序”即以.ashx结尾的文件,它实际...
最近被jquery折磨了一番,倒腾了一个jquery解析json的demo,本demo想实现从asp.net后台实例化dataSet或者dataTable数据集,将dataSet转换成json并返回给客户端,客户端用jquery getJson方法解析出来并显示在页面上。...
先我们来看一个官方的实例使用 AJAX 请求来获得 JSON 数据,并输出结果: 代码如下:$(“button”).click(function(){ $.getJSON(“demo_ajax_json.js”,function(result){ $.each(result, function(i, field){ $...
今天在写一个检查用户名的功能时,使用的是jQuery.post( url, [data], [callback], [type] )这个函数,但是发现其中的回调函数不能执行。 先来看看我的代码: 前台代码: [removed] function checkUser() { var ...
load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值。 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或者是$.ajax()方法) $.get()方法...
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...
自己写一个loadUrl()方法,不能使用jquery自带的load(). 当客户端调用loadUrl()超时,弹出一个登录框,并加一个背景层下面的整个浏览器.这时浏览器窗口内容不能变,只是上面加了一个登录框和一个背景层 当...
在Ajax方面,jQuery除了提供底层的jQuery.ajax()方法外,也提供了下面的简单方法: (1) jQuery.get(url, [data], [callback], [type]) (2) jQuery.getJSON(url, [data], [callback]) (3) jQuery.getScript...
load()方法是jQuery中最为简单和常用的Ajax方法,能载入远程HTML代码并插入到DOM中。它的语法结构为: load( url [, data][, callback] ) load()方法参数解释见下表: 参数名称 类 型 说 明 url String ...