Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 调用异步请求以加载信息_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 调用异步请求以加载信息

Javascript 调用异步请求以加载信息,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,在我的wordpress主题中,我使用api加载电影信息。因此,我尝试调用jquery函数,该函数将执行ajax请求并将结果加载到预定义的DIV中 但是当我在content.php页面中调用该函数时,document.ready尚未实现。因此,要么我需要在document.ready()之外定义jquery函数(我认为这不是一个好主意),要么我需要在bodyOnload上调用该函数。在后一种情况下,我不确定如何包含使用wordpress的get_the_content()函数从页面内容解析的UR

在我的wordpress主题中,我使用api加载电影信息。因此,我尝试调用jquery函数,该函数将执行ajax请求并将结果加载到预定义的DIV中

但是当我在content.php页面中调用该函数时,document.ready尚未实现。因此,要么我需要在document.ready()之外定义jquery函数(我认为这不是一个好主意),要么我需要在bodyOnload上调用该函数。在后一种情况下,我不确定如何包含使用wordpress的get_the_content()函数从页面内容解析的URL

谁能给我建议一下吗

PHP(content.PHP):

在functions.php中使用下面的命令添加custom.js

function test_call_js(){
    wp_enqueue_script(
        'custom-js',
        get_stylesheet_directory_uri() . '/js/custom.js',
        array( 'jquery' )
    ); 
}

add_action('wp_enqueue_scripts', 'test_call_js');

您遇到了范围问题。您正在另一个函数中声明该函数,这意味着在添加脚本时,它在全局范围内不可见。您需要在全局范围内移动将从其他脚本调用的函数


AJAX调用仍然可以放置在ready事件中,因此它将在DOM就绪后加载脚本。

与负4一样,这是一个时间问题。您正在调用一个只在dom ready上创建的函数。解决方案是在dom ready上调用ajax函数,并在脚本的前面(调用ajax函数的地方)输出该函数所需的变量

i、 e.content.php

    $urls = preg_split($pattern, $subject); // Let say I have all the links in this variable
    echo '<script> var urls='.json_encode($urls).';</script>'; 

您仍然可以在文档中定义您的函数。ready函数可以创建函数,然后在其他函数中调用(在上面的例子中是anon函数)

为什么不能在页面末尾运行函数(即加载脚本后)?问题是,此页面使用特殊模板,比方说card-view.php。在这个模板文件中,我调用content.php(使用get_template_part('content');),它定义了主体部分。因此,如果我在card-view.php的末尾调用loadMovies,由于某种原因,$URL变量不可用。(与PHP不同,如果我将content.PHP包含在card-view.PHP中,我确实可以访问前者的所有变量)。那么,你是否建议我将loadMovies放在doc.ready之外,并调用另一个函数callAjax(),我应该将其放在doc.ready中?是的,没错。实际上,您可以在ready处理程序之外拥有函数的所有内容,只需从处理程序内部调用函数即可。然而,我只是觉得奇怪的是,应该从导入的脚本调用的函数再次调用该脚本,以便它可以再次调用该函数。这是一个循环,它给出了错误(我相信这是合乎逻辑的)。因为现在loadMovies()被正确调用,但是在loadMovies()内部调用callAjax()时,它还不可用(因为dom还没有准备好)。我相信这不是一个范围问题,我只是在DOM就绪之前调用函数,但希望被调用的函数在DOM就绪后开始工作。不。php是我的主页。我调用的函数是在function.php中定义的。基本上,我只是从content.php调用一个JS函数,它在tern中发出ajax请求。看,基本上我从content.php调用了loadMovies()。loadMovies()函数应该发出一些Ajax请求。但我不能冒险在加载dom之前发出ajax请求。这就是难题所在。您只需在loadMovies()调用中添加另一个就绪处理程序。
function test_call_js(){
    wp_enqueue_script(
        'custom-js',
        get_stylesheet_directory_uri() . '/js/custom.js',
        array( 'jquery' )
    ); 
}

add_action('wp_enqueue_scripts', 'test_call_js');
    $urls = preg_split($pattern, $subject); // Let say I have all the links in this variable
    echo '<script> var urls='.json_encode($urls).';</script>'; 
    function loadMovies(urls){
        console.log(urls);
        // define our function.
    }

    jQuery(document).ready(function () {

        loadMovies(urls){
            console.log(urls);
            // call our predefined function
        }
    });