Cordova中的本地Web服务调用失败,结果为ERR_FILE_NOT_FOUND

时间:2015-08-24 12:40:04

标签: android jquery asp.net ajax cordova

我正在使用ASP.Net并使用Cordova 5.1.1构建一个Android应用程序。我创建了一个Web服务( services.asmx ),其中包含 appStatus 方法,我在 index.html 页面中调用了相同的内容。当我在笔记本电脑上运行或发布时,这非常有效。但是一旦我构建并运行,我就会发现状态为0的文件未找到错误。

Ajax Call

        var request = $.ajax({
            url: "services.asmx/appStatus",
            method: "POST",
            data: {},
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: ajaxSigninSuccess,
            error: ajaxSigninError
        });

        function ajaxSigninSuccess(response) {
            alert(response.d);
        }

        function ajaxSigninError(response) {
            alert(response.status + " " + response.statusText);
        }

以下是回复文字

onabort: null
onerror: null
onload: null
onloadend: null
onloadstart: null
onprogress: null
onreadystatechange: null
ontimeout: null
readyState: 4
response: ""
responseText: ""
responseType: ""
responseURL: ""
responseXML: null
status: 0
statusText: ""
timeout: 0

错误

GET file:///android_asset/www/services.asmx/appStatus net::ERR_FILE_NOT_FOUND

请提前帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

您有关于服务器+客户端的问题 我称服务器是您的服务ASP.Net(" services.asmx")部署的地方 客户端是设备中的移动应用程序。

1.当您的计算机中的服务器+客户端时 例如:网址服务:" http://localhost:8080/services.asmx"那么当你通过url' services.asmx / appStatus'来调用ajax时然后它将获取html文件的路径(包括ajax代码)并添加到url。如果html文件是" http://localhost:8080/index.html"那么ajax的url调用将是:" http://localhost:8080/services.asmx/appStatus"。我认为它与你合作。

2.当您在计算机中部署服务器并在设备(模拟器)中运行客户端时 计算机的IP地址和计算机中的模拟器是不同的。 您的应用以index.html文件开头:" file:///android_asset/www/index.html"因此ajax的url调用将是:" file:///android_asset/www/services.asmx/appStatus"在网址上找不到任何服务或文件。

3.解决方案:通过完整网址调用ajax:" http://domain.com/services.asmx/appStatus"或者如果您的服务器在本地部署,那么" http://ipaddress:port/services.asmx/appStatus"。