这曾经起作用,但不知何故它不再起作用了。 我得到一个未捕获的ReferenceError:没有定义msg(它指的是成功函数) 奇怪的是,它不应该成功,因为服务器已关闭。 即使服务器启动,它也会给我同样的错误。
function login(user, pass){
$.ajax({
type: "GET",
url: "http://XX.XX.XXX.XX:8080/wcf/Service1.svc/HentBruger",
data: '{"username":"'+user+'", "password":"'+pass+'"}',
processData: true,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: loginsuccess(msg),
error: loginfailed(msg),
});
}
我更喜欢使用此代码,因为它为我提供了超时可能性。但同样的错误,msg没有在完成部分中定义
$.ajax({
type: "GET",
url: "http://XX.XX.XXX.XX:8080/wcf/Service1.svc/HentBruger",
data: '{"username":"someuser", "password":"somepass"}',
timeout:5000
}).done(function( msg ){
alert( msg );
}).fail(function(jqXHR, textStatus){
if(textStatus == 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
});
答案 0 :(得分:1)
更改
success: loginsuccess(msg),
error: loginfailed(msg),
到
success: loginsuccess,
error: loginfailed,
您没有将loginsuccess
设置为回调,而是设置loginsuccess(msg)
的返回值,msg
仍然未定义。
在这两种情况下,您可能会受到same origin policy的约束:只有当远程网站设置了CORS headers时,您才可以在javascript中读取发送到其他来源的JSON请求的结果。
答案 1 :(得分:0)
感谢您的回复。问题已经解决了。我不知道在经历之后我知道的是,wamps允许原始策略仅设置为localhost。和phonegaps允许来源政策设置为*
这是什么工作:
$.ajax({
type: "POST", //This was set to GET
url: "http://XX.XX.XXX.XX:8080/wcf/Service1.svc/HentBruger",
data: '{"username":"something", "password":"somepass"}',
contentType: "application/json; charset=utf-8", //I've forgot those
dataType: "json", //I've forgot those
timeout:5000
}).success(function( msg ){
document.write(msg);
}).fail(function(jqXHR, textStatus){
alert(textStatus); //returns an error, not timeout. But i am recieving something on failure..
if(textStatus == 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
});
另外,我已将allow origin policy *添加到我的IIS服务器。不知道是否做了什么。