2 xmz java XMZ_JAVA 于 2017.01.06 15:39 提问

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
welan123123   2017.01.06 15:51
已采纳

改一下url,自动获取地址

url: window.location.protocol+'//'+window.location.host+'user/login.do',
welan123123
welan123123 回复XMZ_JAVA: 你的html或者jsp页面引用你写的js代码了吗,自动获取的地址怎么会是file:
11 个月之前 回复
XMZ_JAVA
XMZ_JAVA 改掉之后出现如下错误 XMLHttpRequest cannot load file://user/login.do. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
11 个月之前 回复
he110jean
he110jean   2017.01.06 15:44

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

XMZ_JAVA
XMZ_JAVA XMLHttpRequest cannot load http://localhost8080/note2/user/login.do. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
11 个月之前 回复
XMZ_JAVA
XMZ_JAVA 在同一项目路径下,我用的是相对地址,出现问题后我也把路径改成完整路径了,改掉之后还是连接失败,出现的错误提示是
11 个月之前 回复
JE_GE
JE_GE   2017.01.06 16:01

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

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

welan123123
welan123123 回复XMZ_JAVA: 楼主还没发现‘localhost’‘8080’之间少了点什么吗
11 个月之前 回复
XMZ_JAVA
XMZ_JAVA 大神你好,之前有找到这篇文章,并对浏览器做了修改,修改之后出现的报错信息是 XMLHttpRequest cannot load http://localhost8080/note2/user/login.do. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 百度后发现 可以通过设置Access-Control-Allow-Origin来实现跨域访问,请问在Springmvc中设置Access-Control-Allow-Origin是否需要设置filter呢?
11 个月之前 回复
qq_26625037
qq_26625037   2017.01.06 16:11

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

welan123123
welan123123 回复XMZ_JAVA: 因为他脸疼
11 个月之前 回复
XMZ_JAVA
XMZ_JAVA 回复XMZ_JAVA: 为什么一复制过来冒号就没了呢。。。
11 个月之前 回复
XMZ_JAVA
XMZ_JAVA 哈哈哈,这是浏览器显示问题,实际上是有的,我先在浏览器上输入http://localhost8080/note2/user/login.do做单元测试,通过之后才写ajax的。不过,大兄弟你的眼睛真是厉害啊
11 个月之前 回复
welan123123
welan123123 这都被你发现了
11 个月之前 回复
welan123123
welan123123 好细心啊
11 个月之前 回复
welan123123
welan123123   2017.01.06 16:22

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

u010528826
u010528826   2017.01.06 18:24

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!