Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ajax在一些Android设备上工作,而不是在其他设备上_Android_Ajax_Jquery Mobile - Fatal编程技术网

ajax在一些Android设备上工作,而不是在其他设备上

ajax在一些Android设备上工作,而不是在其他设备上,android,ajax,jquery-mobile,Android,Ajax,Jquery Mobile,[稍后编辑:正如我发现的,这个问题与Android版本有关,而不是设备类型。因此,我的代码在4.0之前非常适合Android,而不是更高版本。解决方法在答案中。] 我已经为这个问题浪费了至少两天的时间。我有几个网页打包成Android应用程序。在浏览器和我的Android设备(包括Galaxy Tab 2)上都能完美工作。但不是在Nexus上。我没有,所以我一直在做APK和一个朋友测试。错误发生在AJAX上。同样的代码对我有效,但对他无效(还有少数人,我不知道他们的设备) 下面是我使用的小测试。

[稍后编辑:正如我发现的,这个问题与Android版本有关,而不是设备类型。因此,我的代码在4.0之前非常适合Android,而不是更高版本。解决方法在答案中。]

我已经为这个问题浪费了至少两天的时间。我有几个网页打包成Android应用程序。在浏览器和我的Android设备(包括Galaxy Tab 2)上都能完美工作。但不是在Nexus上。我没有,所以我一直在做APK和一个朋友测试。错误发生在AJAX上。同样的代码对我有效,但对他无效(还有少数人,我不知道他们的设备)

下面是我使用的小测试。正如您所看到的,它是无错误的(这是我的猜测)。为什么不在所有Android设备上工作?我提到我已经用Eclipse和Build.PhoneGap.com编译了这段代码(其他引用的文件在这里)。然而,同样的结果是:我得到的APK在某些设备上工作,而不是在其他设备上。使用*file:///android_asset/www/import.html*没有帮助我。错误是404,因为文件不在那里。但事实的确如此

错在哪里?这让我发疯:)。为什么这段代码在浏览器和我的Galaxy Tab 2(以及三星Gio)上的APK上运行良好,但在Nexus(和其他设备)上却不行


试验
//$(文档).ready(函数(){
$(document).bind(“pageinit”,function(){
$(“#buton”).bind('click',function(){
$.mobile.showPageLoadingMsg();
$.ajax({
url:'import.html',
数据类型:'html',
键入:“GET”,
成功:函数(html){
$.mobile.hidePageLoadingMsg();
$(“#结果”).html(html);
},
错误:函数(jqXHR、textStatus、errorshown){
$(“#result”).html(“错误:+errorshown+”
“+textStatus+”
“+JSON.stringify(jqXHR)) $.mobile.hidePageLoadingMsg(); 警报(“不工作!!!”); } }) }); }); 试验 AJAX
我找到了我所需要的。Android 4.1和4.2引入了这个新方法:getAllowUniversalAccessFromFileURLs

由于它在16以下的API上不起作用,所以解决方案需要更多的行,以确保这种不存在的方法不会在以前的API中导致错误

public class MainActivity extends Activity {
/** Called when the activity is first created. */
WebView webView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) findViewById(R.id.webView);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.getSettings().setJavaScriptEnabled(true);
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN){
        fixNewAndroid(webView);
    }
    webView.setWebChromeClient(new WebChromeClient());
    webView.loadUrl("file:///android_asset/www/index.html");
}

@TargetApi(16)
protected void fixNewAndroid(WebView webView) {
    try {
        webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    } catch(NullPointerException e) {
    }
}

}

您是否检查了您的ajax返回的内容?这是返回DOM文档! 你正试图为你的#结果设置html文档! 如果您查看一下,您可以看到成功函数有3个参数:

success:function(data, textStatus, jqXHR){}
现在,您可以选择如何获取html并将其显示在
$(“#result”)

success:function(data, textStatus, jqXHR){}
$("#result").html(jqXHR.responseText);