XMZ_JAVA
天_道_酬_勤
2017-01-06 07:39
采纳率: 100%
浏览 1.5k

ajax连接失败,服务器端用的是springmvc+mybatis,纠结半天了,怀疑是浏览器版本问题

前端代码如下
function loginAction(){
var name=$('#count').val();
var password=$('#password').val();
if(checkName()+checkPassword()!=2){
return;
}
var parameter={"name":name,"password":password};
$.ajax({
url:'user/login.do',
type:'POST',
data:parameter,
dataType:'json',
success:function(result){
if(result.state==0){
location.href='edit.html';
return;
}else if(result.state==2){
//用户名错误
$('#count-msg').html(result.message);
return;
}else if(result.state==3){
//密码错误
$('#password-msg').html(result.message);
return;
}
alert(result.message);
},
error:function(){
alert('AJAX传输失败');
}
});
}

后端代码如下

@Controller
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/login.do")
@ResponseBody
public JsonResult login(String name,String password){
try {
User user=userService.login(name, password);
return new JsonResult(user);
} catch (UserNameException e) {
e.printStackTrace();
return new JsonResult(3,e);
}catch (PasswordException e) {
e.printStackTrace();
return new JsonResult(2,e);
}
catch (Exception e) {
e.printStackTrace();
return new JsonResult(e);
}
}

}

报错信息如下
XMLHttpRequest cannot load file:///D:/tts9/workspace/note2/src/main/webapp/user/login.do.
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.send @ jquery-1.11.3.js:9664

网上搜索出来说是ajax跨域,需要用jsonp,但是上次做过相同的项目,上次都可以成功,这次ajax无缘由的就连接失败了,感觉很奇怪。
另外,jsonp该怎么使用呢。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • welan123123
    奔跑的小鱼儿 2017-01-06 07:51
    已采纳

    改一下url,自动获取地址

    url: window.location.protocol+'//'+window.location.host+'user/login.do',
    
    点赞 评论
  • he110jean
    he110jean 2017-01-06 07:44

    url要写全的呀 http://localhost:8080/user/login.do

    点赞 评论
  • JE_GE
    JE_GE 2017-01-06 08:01

    Ajax本地跨域问题 Cross origin requests are only supported for HTTP

    http://blog.csdn.net/rywaqpf/article/details/44836965

    点赞 评论
  • qq_26625037
    代码界的小学生 2017-01-06 08:11

    http://localhost8080/note2/user/login.do 你是不是少打了个:在‘localhost’‘8080’之间,修改之后直接在浏览器地址栏打开试试。

    点赞 评论
  • welan123123
    奔跑的小鱼儿 2017-01-06 08:22

    把这个放到ajax外面吧
    var addres = window.location.protocol+'//'+window.location.host;
    你现在的addres应该等于http://localhost8080
    等你部署的时候就不用该代码了
    之后改 url: addres+'/note2/user/login.do',
    注意user/login.do前面的路径要补充完整

    点赞 评论
  • u010528826
    Mr-Yao 2017-01-06 10:24

    你把 user/login.do 改成 /user/login.do 试一试

    点赞 评论

相关推荐