我正在使用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
请提前帮助,谢谢。
答案 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"。