将JSON和HTTP请求发送到服务器AJAX

时间:2013-10-01 10:40:10

标签: javascript jquery ajax json google-chrome

我正在尝试将json数据和Http headers发送到服务器

App.LoginController = Ember.ObjectController.extend(
{
    username: '',
    password: '',
    actions: {
        login: function(){
            username = this.get('username');
            password = this.get('password');
            // alert("User: "+ username + " Pass: " + password);

            var loginData = {"code":username, "passkey":password};
            loginData = JSON.stringify(loginData);
            // alert(loginData);
            var timeStamp = getTimeStamp();
            // alert(timeStamp);

            $.ajax({
                url: 'http://192.168.254.222:8080/project/auth/login',
                type: 'POST',
                beforeSend: function (request)
                {
                   request.setRequestHeader("token", authToken);
                },
                data: loginData,
                dataType: 'json',
                contentType: 'application/json',
                success: function(data) {
                    var returned_data = data;
                    console.log(returned_data);
                    console.log(returned_data.error); 
                    alert('yey!');
                },
                error: function(xhr, status, error){
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
            }
        });
    }
}
});
  1. 但变量err会返回 undefined
  2. 此外,我不确定如何将多个HttpRequest headers发送到服务器,同时获取HttpReponse headers
  3. 而chrome给了我这个:
  4.   

    拒绝加载   镀铬的扩展://nhjloagockgobfpopemejpgjjechcpfd/js/jquery.min.map。   资源必须列在web_accessible_resources清单键中   为了通过扩展名以外的页面加载。   本地主机/ WebUI中/:

         

    GET chrome-extension://无效/

    除此之外,我在Firefox中没有收到任何错误消息

1 个答案:

答案 0 :(得分:0)

From AJAX documentation

dataType - 您期望从服务器返回的数据类型。希望你回来json回复

检查authToken是否为字符串?

 beforeSend: function (request)
 {
   request.setRequestHeader("token", authToken); 
 }

同时添加.ajaxComplete(function( event, xhr, settings ),看看你在这里得到什么

另外,对于设置HttpHeader,您可以根据您使用的技术编写服务器代码

我为ASP.Net编写了以下内容

 response.Content.Headers.Add("some_header", "Value");

在jQuery ajax成功回调中读取这个

     $.ajax({
            url: 'http://192.168.254.222:8080/project/auth/login',
            type: 'POST',
            beforeSend: function (request)
            {
               request.setRequestHeader("token", authToken);
            },
            data: loginData,
            dataType: 'json',
            contentType: 'application/json',
            success: function(data, textStatus, request) {
                var returned_data = data;
                alert(request.getResponseHeader('some_header'));
            },
            error: function(xhr, status, errMsg){

            alert(errMsg);
        }
    });