如何将url设置为对html文档发出AJAX请求?

时间:2018-07-30 作者:Marcus Carey

我有一个Javascript文件,它使用ajax加载html文档,但WordPress会更改url。有没有办法设置url以便WordPress不会更改它?

var file =  ‘test/file.html’;
WordPress将文件附加到/wp-admin/ 并将路径设置为http://localhost/wordpress/wp-admin/test/file.html

当我将文件路径更改为http://localhost/wordpress/wp-content/plugings/test/file.html, WordPress仍然使用ajaxurl全局变量,并将路径设置为wp-admin 目录代码如下:

return $.ajax({
    type: \'get\',
    dataType: \'html\',
    url: file,   
    success: function (resp) {
        alert(‘Success’);
    },
    error: function (jqXHR) {
        alert(\'Error ‘);
    }
});

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

是的,有这样一种方法:你应该在那里通过绝对路径。。。

假设您的JS文件是这样排队的:

wp_enqueue_script( \'my-script\', \'path-to-js-file.js\'... );
那么你应该使用wp_localize_script 并在其中传递值:

wp_localize_script( \'my-script\', \'MyScriptData\', array( \'ajax_url\' => site_url(\'/test/file.html\') ) );
然后,您可以通过以下方式访问JS文件中的该值:

return $.ajax({
    type: \'get\',
    dataType: \'html\',
    url: MyScriptData.ajax_url, // <-- here you get that value...
    success: function (resp) {
        alert(‘Success’);
    },
    error: function (jqXHR) {
        alert(\'Error ‘);
    }
});
但是

You should know, that you SHOULD process AJAX requests using proper actions and not with some external file. Here you can read more about dealing with AJAX in WordPress: AJAX in Plugins

结束