Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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
Javascript 安卓网络视图+;AJAX本地文件_Javascript_Android_Ajax_Webview_Cross Domain - Fatal编程技术网

Javascript 安卓网络视图+;AJAX本地文件

Javascript 安卓网络视图+;AJAX本地文件,javascript,android,ajax,webview,cross-domain,Javascript,Android,Ajax,Webview,Cross Domain,我有一个安卓网络视图,加载我在本地资产中拥有的网站。我没有自己构建它,我对标记、js等几乎没有控制权 问题:部分网站使用jquery$。ajax获取HTML以模式显示,我认为我遇到了跨域问题(如果我在桌面上本地测试该网站,我会收到相同来源的警告,我的来源为“null”),ie由于某些原因,本地js无法在assets文件夹中获取其他本地文件,因为底层浏览器认为这些文件来自不同的来源。关于这件事,我已经读了所有我能得到的资料,但似乎没有什么不同。未在LogCat中获取任何错误或警告 这在Nexus

我有一个安卓网络视图,加载我在本地资产中拥有的网站。我没有自己构建它,我对标记、js等几乎没有控制权

问题:部分网站使用jquery$。ajax获取HTML以模式显示,我认为我遇到了跨域问题(如果我在桌面上本地测试该网站,我会收到相同来源的警告,我的来源为“null”),ie由于某些原因,本地js无法在assets文件夹中获取其他本地文件,因为底层浏览器认为这些文件来自不同的来源。关于这件事,我已经读了所有我能得到的资料,但似乎没有什么不同。未在LogCat中获取任何错误或警告

这在Nexus 7上运行,文件位于资产文件夹中(
file:///android_asset
)。其他一切都很好,但ajax并没有带来好运

从舱单中:

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
以下是相关的js:

var load = function ( source, callback, dontShowLoader ) {
if( !dontShowLoader ) {
    loading( 'show' );
}
$.ajax({
    url: source,
    type: 'GET',
    data: {
        campaign: true
    },
    success: function ( data ) {
        var $data = $(data);
        loading( 'hide' );
        $data.data( 'url', source );
        callback( $(data) );
    }
});
};

我是不是遗漏了什么?是否真的没有办法让ajax超越本地文件内容?请注意,我只有本地文件可以使用,正常情况下,平板电脑在使用应用程序时未连接到互联网,因此任何外部呼叫都是不允许的。

您需要允许跨域。在本例中,json值和脚本允许跨域

$.ajaxPrefilter( "json script", function( options ) {
    options.crossDomain = true;
});

谢谢@njzk2的回答,我做到了:

$.ajaxPrefilter( 'text', function( options ) { options.crossDomain = true; }); 
$.ajax({ url: source, type: 'GET', dataType: 'text'
在firefox、chrome和IE中加载本地文件(不通过任何服务器)

我个人缺少至少针对api 16的这个参数(不知道是否有其他参数可以针对任何较旧的api)


谢谢

好吧,我会。。。成功了。执行以下操作:$.ajaxPrefilter('text',函数(选项){options.crossDomain=true;});$。ajax({url:source,类型:'GET',数据类型:'text',谢谢!
$.ajaxPrefilter( 'text', function( options ) { options.crossDomain = true; }); 
$.ajax({ url: source, type: 'GET', dataType: 'text'
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);