appgyver类固醇中的AJAX命令

时间:2013-12-16 15:50:11

标签: javascript jquery ajax cordova steroids

我已经将我的phonegap项目复制到了类固醇,但现在我的ajax命令无法正常工作,我根本不知道是什么导致了它,所以任何建议都可能有用。

这是导致问题的代码,它始终与request.status = 0错误:

$.ajax({
        type: "POST",
        url: serverUrl + "login.ajax",
        data: { jsonLogin: JSON.stringify(loginObject), deviceInfo: JSON.stringify(deviceInfo)},
        async: true,
        timeout: 7000,
        cache: false,
        headers: { "cache-control": "no-cache" },
        success: function(data) {
                    ...   
                 },
        error: function(request, status, err) {
            ...
        },
        complete: function(){...}
    });     

2 个答案:

答案 0 :(得分:1)

AppGyver员工在这里!

config/application.coffee中,您的steroids.config.location = "http://localhost/index.html"还是index.html?类固醇通过localhost(即手机上的内部Web服务器)提供app文件,而PhoneGap使用File协议。使用localhost使WebView强制执行更严格的CORS规则,因此您需要Access-Control-Allow-Origin标头来响应服务器响应。通过文件协议提供的HTML文件允许跨域请求在没有CORS标头的情况下通过。

您可以在https://github.com/appgyver/steroids-runtime-tests

找到一个带有AJAX测试的测试项目

答案 1 :(得分:0)

我认为jQuery不会解析json数据,因为你没有指定dataType

 $.ajax({
            type: "POST",
            url: serverUrl + "login.ajax",
            data: { jsonLogin: JSON.stringify(loginObject), deviceInfo: JSON.stringify(deviceInfo)},
            dataType: json, //Specify data type
            async: true,
            timeout: 7000,
            cache: false,
            headers: { "cache-control": "no-cache" },
            success: function(data) {
                        ...   
                     },
            error: function(request, status, err) {
                ...
            },
            complete: function(){...}
        });