Java后台nginx解决跨域问题传递JSON 会出现问题

如何解决 Ajax 跨域请求不到的问题? - 知乎298被浏览84433分享邀请回答0添加评论分享收藏感谢收起43 条评论分享收藏感谢收起查看更多回答在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
返回的状态码ERROR: {"readyState":4,"status":200,"statusText":"success"} 以下是js 代码
type:"get",
async:false,
url:"/ajax/SearchAjax.ashx?domain="+lk+"",
dataType:"jsonp",
jsonpCallback: 'CallBack',
success:function(jsonp){
bhg=JSON.stringify(jsonp)
error:function(error){
$('#zhuchi').modal('hide')
$(".huhuhuhuh").html(JSON.stringify(error));
那边返回的数据是
[{"resultID":"A0.CM","result":"[BEGINRESPONSE]CODE=1010;ERRORINFO=查询域名失败;[ENDRESPONSE]"}]
返回的数据能在控制台看到,
不通过PHP应该怎么获取到数据?怎么解决报错、。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的问题的格式都是错误的,标点符号也用错了,看得出来你平常做事就有不细心的习惯,而不细心是编程的大忌。
编程无小事,哪怕错一个小数点也不行,平时就养成无论做任何事情都检查三遍,确保没有任何问题了再发表的习惯,会对编程很有帮助。
先把格式改好了再来问。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Please tidy up your code
不通过 php 什么意思?你上面有通过php吗?
lert 应为 alert
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你是jsonp 那么后台就要以JSONP的数据返回回来,返回来回调方法。你定义好callResult,拼接好后。返回应该是这样的
callResult([{"resultID":"A0.CM","result":"[BEGINRESPONSE]CODE=1010;ERRORINFO=查询域名失败;[ENDRESPONSE]"}]);
然后直接调用到了callResult方法。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:ajax跨域post请求的java代理实现 - CSDN博客
ajax跨域post请求的java代理实现
&&& 最近开发的项目有个功能的需求如下:根据用户提供的外部链接(outter_url),在页面填写好查询条件(param)并向该url发起查询请求,查询返回的数据来动态生成html的table来显示数据,同时要求请求的方法是post请求。
在开发过程中用的是jquery的异步请求。问题出现了,网上搜了半天没有发现实现jquery跨域进行post请求的解决方案(貌似不支持),所以自己用java代码来发起post跨域请求
& 关于实现思路的几点说明:
1)&&&&&&项目中用的是spring,所以这个请求是在spring某个controller的方法中实现的,为了方便说明问题该方法假设为(ajaxProxy)
2)&&&&&&在jsp页面中通过jquery的ajax方法,发起一个请求,该请求的url映射到1)中所说的那个ajaxProxy方法,并把查询条件(param)一起传递到ajaxProxy方法.部分代码如下
type : &GET&,
//映射到controller对应方法的url
&url : &&c:url value='/user/put/queryItems'/&&,
//查询条件数据
data : param,
dataType : 'json',
success : function(data) {//动态生成table,代码略}
3)&&&&&&在ajaxProxy方法中,用HttpURLConnection链接outter_url,并设置connection的请求方法为Post,并发送查询条件(param),该部分的代码实现如下:
URL connect = new URL(outer_url);
HttpURLConnection connection =(HttpURLConnection)connect.openConnection();
Connection.setRequestMethod(“Post”);
//发送查询条件
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.wirte(param);
out.flush();
4)&&&&&&接收数据并返回数据,jsp页面中ajax的success方法处理接收到的数据data,并把data返回就可以了,接收数据的代码如下
StringBuffer data = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), &gb2312&));
while ((line = reader.readLine()) != null) {
data.append(line);
综上所述,实现跨域post请求的java实现代码如下
@RequestMapping(&queryItems&)
public @ResponseBody
String ajaxProxy(String name, String startTime, String endTime,
String tag, Model m, HttpServletRequest req) throws UnsupportedEncodingException {
//拼接查询条件,组成json格式的数据发送
JSONObject node = new JSONObject();
JSONObject param = new JSONObject();
param.put(&type&, &&);
param.put(&typevalue&, &&);
//param.put(&key&, name);
param.put(&key&, new String(name.toString().getBytes(&utf-8&), &gbk&));
param.put(&start_time&, startTime);
param.put(&end_time&, endTime);
param.put(&tags&, tag);
node.put(&param&, param);
JSONObject user = new JSONObject();
user.put(&userid&, &123&);
node.put(&user&, user);
JSONObject device = new JSONObject();
device.put(&dnum&, &123&);
node.put(&device&, device);
JSONObject developer = new JSONObject();
developer.put(&apikey&, &******&);
developer.put(&secretkey&, &*****&);
node.put(&developer&, developer);
node.put(&action&, action);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
// 使用POST方式向目的服务器发送请求
StringBuffer data = new StringBuffer();
connect = new URL(&outter_url&);
HttpURLConnection connection = (HttpURLConnection)connect.openConnection();
connection.setRequestMethod(&POST&);
connection.setDoOutput(true);
OutputStreamWriter paramout = new OutputStreamWriter(
connection.getOutputStream(),&UTF-8&);
paramout.write(json);
paramout.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream(), &gb2312&));
while ((line = reader.readLine()) != null) {
data.append(line);
paramout.close();
reader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return data.toString();
本文已收录于以下专栏:
相关文章推荐
ajax 跨域请求
之前转载过一篇关于跨域的文章,分不清什么叫主域跨域和二级跨域
下面这篇微博的博主写的很好,也很清楚。
转载链接:/oneword/archive/201...
前两天做项目遇到一个问题,就是在自己的项目中要去访问项目外部的接口,从自己的项目中传参数过去,通过调用 对方提供的接口去获取想要得到的数据!第一次接触到在自己项目中去访问和调用外部的资源,然后在网上去...
//-----------------------------客户端请求时需要把中文转码 -----------------------------------------
   
    ...
最近在做ping++,用到了服务端接收前端的json并且响应后发回json格式数据到前端的功能。现在就把我写的例子贴在这里,供大家参考。
文章转载自第一代码原创文章http://www.diyidai...
java后台实现用URL调用别人的接口,并且得到接口返回的值
CORS的全称是Cross-Origin Resource Sharing。是用来解决浏览器的跨域问题的。是HTML5的一部分。CORS主要是在服务器端进行配置。官方网站是:http://enable...
1 : 采用jsonp (只支持get请求,后端返回的jsonp格式json,后端无需做请求放行操作) /* $.ajax({
  type: &GET&,
// 此处只能是get请...
java 后台实现ajax post跨域请求传递json格式数据获取json数据问题  
参考大神:http://blog.csdn.net/chunqiuwei/article/d...
他的最新文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2017年8月 总版技术专家分月排行榜第一
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 session 跨域传递 的文章

 

随机推荐