Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Jquery AJAX代码不在本地运行_Jquery_Ajax_Subdirectory - Fatal编程技术网

Jquery AJAX代码不在本地运行

Jquery AJAX代码不在本地运行,jquery,ajax,subdirectory,Jquery,Ajax,Subdirectory,下面给出了读取子文件夹的代码 function countFolder(){ var dir='albums'; var count=0; alert(dir); $.ajax({ url: dir, async:false, success: function (data) { $(data).find("a:contains(" + 'album' + ")").each(function

下面给出了读取子文件夹的代码

function countFolder(){
    var dir='albums';
    var count=0;
    alert(dir);
    $.ajax({
        url: dir,
        async:false,
        success: function (data) {
            $(data).find("a:contains(" + 'album' + ")").each(function () {// function to read foldera name contains 'album'
                count++;
                //alert(url);
            });
        }
    });
    return count;
}
当我在localhost上使用它时,这段代码运行得非常好。但在本地(即从文件位置)运行时,它不会运行。我有12个子文件夹。因此,当我使用localhost时,我得到12的输出,但是当在本地运行时,我只得到0的输出

有什么问题吗?请帮帮我。。 我是jQuery新手。因此,如果是我的错误,请通知它。
在代码中,我只使用html、jQuery、js,而不使用php。

这是因为浏览器的跨域策略。您不能在发送请求的域之外发送ajax请求。因此,基本上,您根本不能在本地使用ajax。

ajax调用服务器。当您从localhost打开时,页面将在服务器(xampp或tomcat)的帮助下打开。但是当您从文件位置打开页面时,它只显示静态内容,仅显示html和js,而不显示任何服务器端代码。如果从文件位置打开,即使是php代码也无法工作,而且浏览器会有所不同。Chrome不允许ajax使用
文件://
协议,但其他浏览器允许。很抱歉,我没有理解,请解释一下。@user2812110:这是因为。考虑到违反SOP的情况,一些浏览器(比如Chrome和您正在使用的浏览器)不允许使用
file://
URL进行所有ajax调用。(如果您查看浏览器控制台,您可能会看到一条消息,说明不允许调用“origin null”)。答案是使用服务器(就像您使用localhost一样)。在域上运行Ajax请求时:
domain.com
,您只能请求
http://domain.com/something
-位于同一域中的。子域不是同一个域。在本地文件上操作时,它找不到源域,将其设置为NULL,因为没有源域,它不能允许所有未知源,因为这将带来巨大的安全风险。我认为在localhost中它是http://而在localfile中它是file://对吗??这是问题吗?都是真的,但这并不能回答问题。