未定义Jquery结果消息

时间:2012-11-25 12:40:14

标签: jquery ajax

这曾经起作用,但不知何故它不再起作用了。 我得到一个未捕获的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?
    }
});

2 个答案:

答案 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服务器。不知道是否做了什么。