0

我在 Eclipse 中有一个准系统 index.html,Android Phonegap 项目,它不会执行 jQuery Mobile ajax 调用。LogCat 显示以下消息并且应用程序崩溃 CordovaWebView: TIMEOUT ERROR! CordovaWebViewClient.onReceivedError: 错误代码=-6 描述=与服务器的连接不成功。

有趣的事实: 1.) 如果我注释掉 ajax 调用,Eclipse 可以正常安装和运行应用程序。2.) 我在 .apk 中使用与通过 PhoneGap Build 处理 html-css-javascript 应用程序获得的相同的 ajax 模式,它工作正常。

详细信息:在 Eclipse Juno 中,我有一个带有 index.html 文件的 Android PhoneGap 项目(它使用 ADT 和 cordova-1.9.0.jar),该文件按以下顺序包含以下 .js 文件:

<script type="text/javascript" src="Scripts/cordova-1.9.0.js"></script>
<script type="text/javascript" src="Scripts/jquery-1.6.2.min.js"></script>
<script src="Scripts/temp.js" type="text/javascript"></script>

temp.js 文件中有这个

$(document).ready(function(){
var theUrl = 'http://www.myDomain.biz/WebServices/gg.svc/';
console.log("theUrl + GetHelpFile = " + theUrl + "GetHelpFile");
$('div#divTarget').html("theUrl + GetHelpFile = " + theUrl + "GetHelpFile");

$.ajax({
type: "GET",
cache: false,
dataType: 'jsonp',
url: theUrl + "GetHelpFile",
contentType: "text/plain",
success: function (theJson) {
var help_file = $(theJson);
$('div#divHelpFile').html(help_file);
},
error: function ($theData) {
var tt = $theData;
alert(tt);
}
});
});

该项目有

  • cordova-1.9.0.jar 在其构建路径中

  • 一个 AndroidManifest.xml 文件,其中包含我的 .java 文件android:name=".java_activity" 和
    android:name="org.apache.cordova.DroidGap"的 <application><activity>

和所有 <uses-permissions>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />

我在 Eclipse 中使用的运行配置以 4.0 AVD 为目标,一切正常。当我注释掉 ajax 调用时,Eclipse 会创建 .apk 文件,打开 AVD,安装应用程序,它运行良好。另外,我在 IIS 中为同一个目录中的同一个 index.html 文件创建了一个网站,并且页面在浏览器中加载并且 ajax 运行良好。

我增加了超时时间,但这并没有帮助

super.setIntegerProperty("loadUrlTimeoutValue", 60000);

你认为我需要做什么才能在我的 Eclipse-Android-PhoneGap 项目中执行 ajax 调用?

谢谢

4

1 回答 1

2

You should use different type of ajax call:

$.get('http://yourdomain.com/index.php', function (data) {
alert(data);
});

phonegap android ajax call doesnt work here is my solution.

于 2012-08-17T07:32:59.647 回答