jsp post跨域提交 json

frank_kkkkking 2012-07-26 10:02:28
小弟新手

现有一个外部网站,我想调用其功能。具体来说例如我发送一个搜索请求,我想直接显示该网站的结果页面。

但问题是改网站接受的是json类型,小弟知识太少,只知道用jquery提交json。但jquery又有不能跨域的问题?

另外一个问题是我现在想用$.post()函数,我不知道函数执行后后是不是能直接跳到url的网页,还是只能返回值?

问题可能很幼稚,请见谅。。。
...全文
524 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
http://XXX.com/Portal/ajaxpro/SearchResults,App_Web_qcc5jf8e.ashx 就是这个啊。。。.net自动生成的路径,没问题的
frank_kkkkking 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

http://XXX.com/Portal/ajaxpro/SearchResults,App_Web_qcc5jf8e.ashx 就是这个啊。。。.net自动生成的路径,没问题的
[/Quote]

怎么会有逗号呢,前面像一个servlet后面好像是一个网页上的动画。我在浏览器之间输入这个地址是什么都打不开的?
  • 打赏
  • 举报
回复
自己做代理,用代理页提交数据,ajax请求代理页面
htynkn 2012-07-26
  • 打赏
  • 举报
回复
用jquery的话直接$.getJSON就行了。

最好还是用$.getScript
frank_kkkkking 2012-07-26
  • 打赏
  • 举报
回复
感谢showbo我对问题有了一些思路

但是现在我要处理提交的请求比较复杂,目标url也很奇怪http://XXX.com/Portal/ajaxpro/SearchResults,App_Web_qcc5jf8e.ashx。这样的话我目标url应该是什么呢?

还有就是这个目标网站需要登录,我要处理的部分在登录后。对于登录处理有没有什么好方法?

谢谢谢谢谢谢。。。。。。。
  • 打赏
  • 举报
回复
java不太清楚,不过应该不是你标出来的那句,你标出来那句应该是发送给远程服务器的

输出内容的应该是
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
out.println(line);
}
reader.close();

你可以先组合起来,然后再处理
          BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String line,s="";
while ((line = reader.readLine()) != null) {
s+=line;
}
reader.close();
/////对内容s的处理代码
out.println(s);//////

frank_kkkkking 2012-07-26
  • 打赏
  • 举报
回复
os.writeChars(s);
s里面是要发送的请求吗?
frank_kkkkking 2012-07-26
  • 打赏
  • 举报
回复
我找了个代理的例子,能不能请大侠帮我看看

<%
String url = null;
StringBuffer params = new StringBuffer();
Enumeration enu = request.getParameterNames();
int total = 0;
while (enu.hasMoreElements()) {
String paramName = (String) enu.nextElement();
if (paramName.equals("url")) {
url = request.getParameter(paramName);
} else {
if (total == 0) {
params.append(paramName)
.append("=")
.append(URLEncoder.encode(
request.getParameter(paramName),
"UTF-8"));
} else {
params.append("&")
.append(paramName)
.append("=")
.append(URLEncoder.encode(
request.getParameter(paramName),
"UTF-8"));
}
++total;
}
}
String para = params.toString();
//out.println(url);
if (url != null) {

URL connect = new URL(url.toString());
HttpURLConnection connection = (HttpURLConnection)connect.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type",
"application/x-www-form-urlencoded");
connection.connect();
DataOutputStream os = new DataOutputStream(connection.getOutputStream());
os.writeChars(s);
os.flush();
os.close();

BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
out.println(line);
}
reader.close();
}
%>

红色的部分是要发送的请求吗?
  • 打赏
  • 举报
回复
如果外部服务器接受你发送的参数的话可以使用jsonp跨域,如果不接受,只能做代理

做代理就是你自己建立一个动态页面,如xxxx.aspx什么的,这个动态页面使用服务器端的httprequest等对象下载跨域页面的内容后输出,如果你要修改的话代理页面进行处理后再输出

然后ajax请求xxxx.aspx这个页面。
frank_kkkkking 2012-07-26
  • 打赏
  • 举报
回复
另外补充下请求时post类型的,是不是$.getJSON之类的就不能用了?
frank_kkkkking 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

自己做代理,用代理页提交数据,ajax请求代理页面
[/Quote]

楼上的大侠可不可也具体解释下。
这个做代理页是不是要建在我请求的这个外部网站里面,我现在不能改外部网站的东西。
frank_kkkkking 2012-07-26
  • 打赏
  • 举报
回复
楼上的大侠可不可也具体解释下。
这个做代理页是不是要建在我请求的这个外部网站里面,我现在不能改外部网站的东西。

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧