Jquey Ajax 跨域访问(cross domain) 取数据遭遇responseText为""

B02512 2011-12-04 06:50:07
在前端网页我想用jquery Ajax访问另外一个域的java controller post method后台服务,比如本地页面是http://localhost/test/test.html添加js代码:
<script type="text/javascript">
$(document).ready(function () {
$("#btnTest").click(function() {
$.ajax({
//contentType:"application/json;charset=UTF-8",
type: "POST",
cache: false,
//url:"http://localhost/test/send.do",这个地址是可以得到正确的msg.responseText值
//url: "http://localhost/app-admin/send.do?callback=?",这个地址是可以得到正确的msg.responseText值
url: "http://192.168.0.100/test/send.do",//这个是远程部署java后台方法的地址,取得msg.responseText值为空。
data: "email=test@microsoft.com&password=111111",
dataType: "jsonp",
jsonp: 'callback',
complete:function(msg)
{
alert(msg.responseText);
},
success: function(msg) {
alert(msg.responseText);
}
});
});
});
</script>


java controller post method部署在另外一台机器上面,比如192.168.0.100
post method 的代码为:

@RequestMapping(value="/send.do",method=RequestMethod.POST)
public void sendEamil(HttpServletRequest request,HttpServletResponse response) throws IOException
{
String email = request.getParameter( "email" );
String password = request.getParameter( "password" );
String callback = request.getParameter( "callback" );
String resultMsg = null;
PrintWriter out = null;
if(email== null || email.equals( "" ) ||
password == null || password.equals( "" )){
resultMsg = callback + "({\"status\":\"0\"})";
}else{
boolean isSignin = true;

if(isSignin){
resultMsg = callback + "({\"status\":\"1\"})";
}else{
resultMsg = callback + "({\"status\":\"0\"})";
}
}
try {
out = response.getWriter();
} catch (IOException e) {
}
out.write(resultMsg);
out.close();

}
现在分为几种情况:
1、如果java后台代码和前台部署在同一台机器上,并且把ajax的url设置为http://localhost/test/send.do,那么在complete方法里面可以正常取得msg.responseText值
2、如果java后台代码和前台部署在不同机器上,并且把ajax的url设置为远端机器ip比如:http://192.168.0.100/test/send.do,那么在complete方法里面可以取得msg.responseText为空,请问这个要如何解决呢?

请问有遇到过这种情况的朋友吗?
...全文
580 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
B02512 2012-02-29
  • 打赏
  • 举报
回复
谢谢了,现在我们修改了取数据方式
Ade子夜 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 licip 的回复:]

后面的设置很重要,这样才能跨域。引用 1 楼 hookee 的回复:
HTML code

<script type="text/javascript">
function callback(data){
alert(data.status)
}
$(document).ready(function () {
$("#btnTest").click(function() {
$……
[/Quote]
ding
licip 2011-12-05
  • 打赏
  • 举报
回复
后面的设置很重要,这样才能跨域。[Quote=引用 1 楼 hookee 的回复:]
HTML code

<script type="text/javascript">
function callback(data){
alert(data.status)
}
$(document).ready(function () {
$("#btnTest").click(function() {
$.ajax({
……
[/Quote]
hookee 2011-12-04
  • 打赏
  • 举报
回复

<script type="text/javascript">
function callback(data){
alert(data.status)
}
$(document).ready(function () {
$("#btnTest").click(function() {
$.ajax({
type: "POST",
cache: false,
url: "http://192.168.0.100/test/send.do",
data: "email=test@microsoft.com&password=111111",
dataType: "jsonp",
jsonp: 'callback'
});
});
});
</script>
黑色渐变 2011-12-04
  • 打赏
  • 举报
回复
这属于跨域情况,请查阅jquery的jsonp

52,782

社区成员

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

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