簡體   English   中英

與wordpress的jquery POST錯誤

[英]jquery POST error with wordpress

我正在嘗試使用POST來檢索wordpress網站上的一些腳本,但我收到以下錯誤

Uncaught TypeError: Cannot call method 'post' of undefined 

基本上我加載了一個外部javascript文件,它加載了幾個腳本,然后回調到原始頁面上的一個函數來執行POST調用來檢索一些數據。

我在“常規”基於HTML的網站上使用了這個完全相同的腳本,所以我知道它在其他地方有用。 正如你所看到的那樣加載jQuery,因為我使用.getScript來檢索另一個文件(它會加載)

現在為函數retrieve_window(); 位於模板文件中。

//template file that initially loads
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://localhost/Project1/js/retrieve_scripts.js"></script>
<div class="reserve_wrapper " id="resere_wrapper"></div>
<script>

    function retrieve_window(){

        $.post("http://localhost/Project1/windows/serve_window",function(data) {
            $('#reserve_wrapper').html(data);
            display_window();
        });
    }
</script>

這是加載的get_scritps文件

//retrieve_scripts.js
jQuery(document).ready(function ($) {   
    $.getScript("http://localhost/project1/js/date.js", function() { }); //this script loads
    retrieve_window(); //calls back to template file to make POST request
});

所以基本上retrieve_window是一個回調函數,以確保正確加載date.js腳本

retrieve_scripts.js文件中引用的$變量是傳遞給.ready(function($){})的第一個參數。 這與jQuery的使用一致。

內聯腳本標記中引用的$引用全局$變量,因為該名稱的作用域中沒有其他變量。

代碼中某處運行但不在摘錄中的jQuery的全局$引用被刪除,可能是通過調用jQuery.noConflict()

據推測,在您的內聯腳本執行並定義retrieve_window()函數時,全局引用仍然存在。 這是一個黑客,但我猜測會工作:

(function( $ ) {
    // we are in a closure but want this function to be global, so assign it globally
    retrieve_window = function() {
        // your code here
        $.post() etc. etc.
    };
} ( $ )); // capture a reference to the global value of $ now before it is removed

這里有幾個問題:

1)現在保持簡單,並像這樣構造你的代碼:

$(document).ready(function () {   
    $.getScript("http://localhost/project1/js/date.js", function() { }); //this script loads
});

2)AJAX異步是這樣,你把你的回調的succees回調getScript

 $(document).ready(function () {   
        $.getScript("http://localhost/project1/js/date.js", function() { 
           retrieve_window();
         }); //this script loads
    });

要么

 $(document).ready(function () {   
            $.getScript("http://localhost/project1/js/date.js", retrieve_window); //this script loads
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM