链接 Ajax URL 的正确方法

2023-12-10

在我的插件中,我有一些 jQuery-Ajax 代码,用于处理表单数据并在单击按钮后将其添加到数据库中。由于许多人的插件文件夹路径不同,我想知道是否有办法标准化指向数据处理 PHP 文件的 URL。请参阅下面我的示例:

$.ajax({
   type: "POST",
   url: "url_to_php_file_path.php",
   data: data,
   cache: false,
   success: function() {
      alert.("added");
   }
});

确定目标 URL

在 WordPress 中,所有 AJAX 请求都必须发送到以下 URL:

http://www.example.com/wp-admin/admin-ajax.php

您不应直接向插件或主题目录中的文件发出 AJAX 请求。

另外,不要对上面的 URL 进行硬编码,而应该使用以下函数来构造 URL:

<script>
    ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>

除了上述之外,您还可以使用wp_localize_script(),但这不是必需的,上面的也可以。

注意:不必担心“admin”部分,该 URL 是适用于所有用户(包括未登录(来宾)用户)的正确 URL。

告诉 WordPress 使用什么函数来处理您的 AJAX 请求

您需要让 WordPress 知道哪个函数应该处理您的 AJAX 请求。

为此,您将创建一个自定义函数,并使用wp_ajax_* and wp_ajax_nopriv_* hooks:

add_action('wp_ajax_mycustomfunc', 'mycustomfunc'); // Logged-in users
add_action('wp_ajax_nopriv_mycustomfunc', 'mycustomfunc'); // Guest users
function mycustomfunc() {

    $whatever = esc_html($_POST['whatever']);
    echo 'It works: '.$whatever;
    exit; // This is required to end AJAX requests properly.
}

不要忘记在 AJAX 请求中指定“mycustomfunc”

最后,以下是如何发出正确的 AJAX 请求:

(function ($) {
    $(document).ready(function () {

        var my_data = {
            action: 'mycustomfunc', // This is required so WordPress knows which func to use
            whatever: "yes it is" // Post any variables you want here
        };

        jQuery.post(ajax_url, my_data, function(response) {
            alert('Got this from the server: ' + response);
        });
    });
})(jQuery);

将其全部结合起来

如果您必须将所有内容放入一个文件中,请按以下步骤操作:

// Register my custom function for AJAX processing
add_action('wp_ajax_mycustomfunc', 'mycustomfunc'); // Logged-in users
add_action('wp_ajax_nopriv_mycustomfunc', 'mycustomfunc'); // Guest users
function mycustomfunc() {

    $whatever = esc_html($_POST['whatever']);
    echo 'It works: '.$whatever;
    exit; // This is required to end AJAX requests properly.
}


// Inline JavaScript
add_action('wp_footer', 'my_inline_js');
function my_inline_js() { ?>

    <script>
        // Set the "ajax_url" variable available globally
        ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";

        // Make your AJAX request on document ready:
        (function ($) {
            $(document).ready(function () {

                var my_data = {
                    action: 'mycustomfunc', // This is required so WordPress knows which func to use
                    whatever: "yes it is" // Post any variables you want here
                };

                $.post(ajax_url, my_data, function(response) { // This will make an AJAX request upon page load
                    alert('Got this from the server: ' + response);
                });
            });
        })(jQuery);
    </script>

    <?php
}

注:对于ajax_url部分,你可以使用wp_localize_script()而不是手动设置它,但它不太灵活,因为它需要指定现有的排队脚本,而您可能没有。

注意:此外,为了将内联 JavaScript 手动输出到页面中,wp_footer钩子是正确使用的钩子。如果使用wp_localize_script()那么你会使用wp_enqueue_scripts改为钩子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链接 Ajax URL 的正确方法 的相关文章

  • jQuery.ajax() 记录 HTTP 请求

    我有一个发送 HTTP POST 请求的函数 我想记录它以进行调试 这是函数 function serverRequest URL DATA callback ajax url URL type POST dataType text con
  • 如何清除画布中图像上的矩形

    我需要清除画布中图像上绘制的矩形 而不损坏现有图像 我可以绘制小矩形点并将其清除 但问题是 当我清除矩形时 它在图像上仍保留为白色小斑点 有人可以告诉我如何清除图像上的矩形而不损坏现有图像 我使用了以下方法来清除矩形 但没有用 1 cont
  • 以特定顺序运行具有效果的 jQuery 函数

    我在 javascript 函数中有一些 jQuery 可以更改页面上的文本并以特定的时间间隔淡入和淡出 我希望这些函数在每个函数完成其效果后按顺序运行 dialogueExchange1 dialogueExchange2 dialogu
  • jRails 是 Rails + jQuery 必须的吗?

    我是rails新手 使用rails 2 3 10 并且想使用jquery 特别是jquery ui 该项目是一个全新的项目 我计划使用 jquery ui 中的一些小部件 如 datapicker 和 selectable 等 我听说可以安
  • 聚合物在核心输入上使用功能验证

    有人可以解释一下如何使用函数验证吗这种聚合物元素 http www polymer project org docs elements core elements html core input 导航到 验证 部分
  • 是否可以获取绑定到 jQuery 元素的事件列表?

    正如问题所说 我需要绑定到特定元素的事件列表 我的意思是像单击 鼠标悬停等事件在 dom 加载时绑定到该元素 愚蠢 示例 element click function stuff element mouseover function stu
  • Ajax ModalPopup 在 IE8 - IE9 中显示错误

    我在我的aspx web VB NET 中使用ModalPopup AJAX 使用母版页 它在 ie6 Firefox 中工作正常 但是当我使用IE7 IE8 IE9时 当我想打开Modalpopup时 显示不正确 屏幕被放大 当我使用鼠标
  • 如何使用 jQuery 获取 img url?

    是否有可能获得实际的 URL 而不是src使用 jQuery 或 JavaScript 获取当前 DOM 中图像的属性值 即检索 example com foo jpg 而不是 foo jpg 采用因素考虑 还有其他有趣的属性吗 例如 mi
  • jQuery 和面向对象的 JavaScript - 如何?

    我读了this http www sweetvision com 2009 07 07 how to use object oriented programming with jquery and this http archive plu
  • 从 JavaScript 加载图像

    在我的专辑幻灯片放映页面上 我有类似的代码 span style display none img src imageUrl span span show loader span in showImage 我确定图像已加载 因此我显示图像并
  • .bind 和其他事件之间的区别

    以下代码行之间有什么区别 或者它们只是编写同一内容的两种不同方式 p click function some code here p bind click function some other code here 我是否过于简化了 因为如
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 每n秒执行一次函数

    我制作了这个在 10 秒后点击链接的代码片段 function timeout window setTimeout function img left click 1000 setTimeout timeout 1000 timeout 我
  • Woocommerce:当类别仅包含一项时如何直接跳转到产品页面

    我有一个允许显示产品类别的顶部菜单 在本例中 是我正在销售的应用程序的名称 单击此菜单项时 它会显示类别的内容 正如它应该做的那样 但是 由于该类别仅包含一项 因此我想直接跳转到产品页面 而不是显示包含一项的类别页面 这是相关页面的链接 B
  • JQGrid 列自定义..在运行时添加列

    我是 J Query 的新手 正在尝试一些示例http www trirand com blog jqgrid jqgrid html http www trirand com blog jqgrid jqgrid html我看到列名是用
  • 在 javascript 中实现固定位置会导致 Safari 滚动时出现抖动

    固定位置不适用于我的用例 因为它固定在浏览器窗口上 您可能会处于文本在屏幕右侧之外且无法到达的状态 无论如何 我尝试使用绝对定位 然后调整javascript中的 顶部 它在 Firefox 和 Chrome 中运行良好 但在 Safari
  • 如何在 Chrome 中获取 div 上的 keydown 事件?

    我想在 div 上获取 keydown 事件 我使用 JQuery keydown 很简单 但是 它不适用于 Chrome 为了在 chrome 上工作 我必须设置 tabindex 0 如果我这样做 Chrome 会在我的 div 周围放
  • 日历中 primefaces ajax 上的事件日期选择不起作用

    我有一个日历
  • 根据文本内容从 jquery 对象中过滤元素

    我正在尝试使用contains带有 this 关键字 但它给出了错误 JS function var check ul find li filter function return this contains two css color r
  • 管理产品页面自定义字段显示在购物车和结账中

    我在产品页面的常规设置选项卡上的 WooCommerce 管理中创建了一个自定义字段 以插入几天的制造时间 我想在购物车和结帐页面上每个产品名称上方显示此自定义字段值 这是我的代码 Insert a Custom Admin Field f

随机推荐

  • 当父视图具有日期选择器、SwiftUI 时,不会调用 onPreferenceChange

    我有一个父视图 它有两个子视图 当子视图更改首选项值时 父视图通过以下方式接收首选项更改onPreferenceChange但是 当父级有日期选择器时 onPreferenceChange没有接到电话并停止工作 有没有人找到任何解决方法 s
  • 使用函数解析函数参数的正则表达式

    我想获取字符串的函数参数 sample 5 5 euros 这适用于 s 演示在这里 问题是当我将另一个函数放入参数中时 sample decimal 5 5 euros 仅适用于以下功能 s 演示在这里 但是对于两个或更多函数 我无法获取
  • 将新绘图添加到现有图形中

    我有一个带有一些图的脚本 请参阅示例代码 在做了一些其他事情之后 我想在现有的绘图中添加一个新的绘图 但是当我尝试它时 它会添加最后创建的图形 现在的图2 的绘图 我不知道如何改变它 import matplotlib pylab as p
  • 如何更改导航栏高度

    我看到了一个改变导航栏高度的解决方案 但对我来说没有任何作用 现在我的应用程序有一个与导航控制器连接的视图控制器 我还没有在我的项目中实现任何其他代码 在开始我的项目之前 我需要更改导航栏的高度 edited h CGSize sizeTh
  • 如何定义带有闭包的相互递归?

    我可以做这样的事情 fn func gt Vec
  • 如何解决“项目已添加。键入字典:”错误?

    我有一个应用程序 当我尝试向其中添加项目时 该应用程序被挂起 当我检查跟踪文件时 我得到了这个条目 for int i 0 i
  • 如何保留 svg 文本中的空格

    要在 svg 的文本元素中保留空格 应使用 xml space preserve 作为文本的属性 jsfiddle 但是 它不起作用 我究竟做错了什么 init snap var svgElement document getElement
  • Spring Boot Rest 中没有内容

    当方法未获取记录时 如何配置 Spring Boot 在 GET 方法 通常是 findAll 方法 中返回 204 我不想在每个方法中都做处理 输入下面的代码 if result return new ResponseEntity
  • 使用 django cms cmsplugin_filer_file 和 cmsplugin_filer_image 进行未定义上传

    我刚刚开始使用 django cms 所以请原谅我的新手 每次我尝试在管理区域上传文件时 例如 图像文件使用cmsplugin filer file cmsplugin filer image它 在剪贴板区域中显示为未定义 这很奇怪 因为
  • WifiManager.calculateSignalLevel(RSSI, 5) 问题

    我正在尝试使用 Wifimanager 来计算扫描期间找到的接入点的信号级别 我正在使用以下方法 WifiManager calculateSignalLevel int int 但无论 RSSI 级别是多少 它似乎总是返回相同的 int
  • 使用循环中的复杂命令在 gnome 终端中打开多个选项卡

    我有一个需要这样调用的命令 command complex argument 如果我想运行 gnome terminal 并传递这个参数 它会像这样 gnome terminal e command complex argument 我想在
  • XCode 7 UI 测试:关闭系统生成的 UIAlertController 不起作用

    我有一个 UI 测试 其中涉及取消系统生成的UIAlertController 此警报要求用户授予访问设备日历的权限 测试的目标是点击后的行为OK button 1 let app XCUIApplication this code was
  • 如何判断一个点是否在二维凸多边形内部?

    我有一个凸多边形 通常只是一个旋转的正方形 并且我知道所有 4 个点 如何确定给定点 黄色 绿色 是否为inside多边形 编辑 对于这个特定的项目 我无法访问 JDK 的所有库 例如 AWT 这一页 http www ecse rpi e
  • 无法在 junit 中模拟 BufferedWriter 类

    我在源代码中使用 BufferedWriter 对象 BufferedWriter outputToErrorFile new BufferedWriter new FileWriter file outputToErrorFile app
  • 如何找到像素级标准差?

    我有 20 个具有相同分辨率和范围的栅格 这是一个时间序列 每个栅格都是一年 我想计算所有栅格的像素标准偏差 到目前为止 我正在使用 raster 包 qq2 lt list maxras1 maxras2 maxras3 maxras4
  • 合并两个对象数组的最有效方法

    我已经解决了这个问题 不过 我正在寻找更快的解决方案 因为我的变量有数千个对象 我有两个这样的数组 var full a aa1 b bb1 a aa3 b bb2 a aa3 b bb3 a aa2 b bb3 some a aa1 b
  • 错误6(net::ERR_FILE_NOT_FOUND):找不到文件c或目录

    我正在使用 scriptcase php 代码生成器 它安装在服务器中 但我通过网络访问它 一切都很好 直到有人注销了服务器的管理员 这是我使用的用户 我重新启动了服务器并以管理员身份登录 但现在我无法从 chrome 访问 scriptc
  • 将执行计时代码放入函数中,OpenCV?

    我在我的程序 C 和 OpenCV 中随处使用了这个代码片段 它用于计时一些操作 double t Some code t double getTickCount Object1 LotOfComputing t 1000 double g
  • wait Promise.all() 和多个await 之间有什么区别?

    之间有什么区别 const result1 result2 await Promise all task1 task2 and const t1 task1 const t2 task2 const result1 await t1 con
  • 链接 Ajax URL 的正确方法

    在我的插件中 我有一些 jQuery Ajax 代码 用于处理表单数据并在单击按钮后将其添加到数据库中 由于许多人的插件文件夹路径不同 我想知道是否有办法标准化指向数据处理 PHP 文件的 URL 请参阅下面我的示例 ajax type P