You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery中用同一数据执行两个不同action的AJAX请求

解决AJAX请求复用数据对象并设置不同Action的问题

问题出在你把action直接写在了$.ajax的配置项里——WordPress的AJAX机制要求action必须放在data对象中才会被后端识别,单独写在配置项里不会被传递到后端,所以才会失效。

要复用原request_data对象同时给两个请求设置不同的action,你需要复制原数据对象并为每个副本添加对应的action属性,这样既不会修改原对象,也能满足两个请求的不同需求。

修改后的完整代码

var request_data = {
    nonce: ajax_object.nonce, 
    category_id: cat_ids,
    brand_name: brand_name_value,
    orderby_meta_key: orderby_meta_key,
    orderby: orderby,
    order_type: order_type,
    shop_view: shop_view
} 

function ajax_filter(){
    // 第一个AJAX请求:复制原数据并添加action
    $.ajax({
        url: ajax_object.ajax_url,
        type: 'post',
        data: Object.assign({}, request_data, { action: 'shop_filter' }),
        success: function(feedback) {
            // 处理第一个请求的回调逻辑
        }
    })
        
    // 第二个AJAX请求:复制原数据并添加另一个action
    $.ajax({
        url: ajax_object.ajax_url,
        type: 'post',
        cache: true,
        data: Object.assign({}, request_data, { action: 'update_another_function' }),
        success: function(feedback) {
            // 处理第二个请求的回调逻辑
        }
    })
}

补充说明

  • Object.assign({}, request_data, { action: 'xxx' })会创建一个新对象,先复制request_data的所有属性,再添加/覆盖action属性,原request_data不会被修改,确保两个请求都能拿到原始的基础数据。
  • 你也可以用ES6扩展运算符替代Object.assign,写法更简洁:{...request_data, action: 'shop_filter'},效果完全一致。

内容的提问来源于stack exchange,提问作者osama B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:40:25