jquery 在同一函数中使用两个完成回调,一个具有数据类型 json,一个不具有数据类型

2024-04-10

尝试使用两个donejQuery 函数中的回调。一种是 JSON 数据类型,另一种不是。 第一个调用 php 函数data这不是一个 JSON 数组。我想要的第二个将从同一个 php 调用中调用 JSON 编码的数组。我需要将 ID 数组传递给另一个函数

这可能吗?像这样的东西

function func1() {

  jQuery.ajax({
    type: 'post',
    url: my_ajax.ajax_url,
    data: {
      action: 'myphp'
    }
  })

  .done(function(data) {
    jQuery('#adivID').html(data);
  })
  .fail(function(xhr, status, error) {
    console.log(xhr.responseText);
    alert(error);
  })

  dataType: 'JSON',
  .done(function(data) {
    ids: id;
    func2(data.ids);
  })
}

编辑1 - 尝试在两个端点

function func1() {
  jQuery.ajax({
    type: 'post',
    url: my_ajax.ajax_url,
    data: {
      action: 'myphp'
    }
  })

  .done(function(data) {
    jQuery('#adivID').html(data);
  })
  .fail(function(xhr, status, error) {
    console.log(xhr.responseText);
    alert(error);
  })

  jQuery.ajax({
    type: 'post',
    url: my_ajax.ajax_url,
    dataType: 'JSON',
    data: {
        action: 'myphp',
        ids: id;
    }
  })   
  .done(function(data) {
    func2(data.ids);
  })
}

PHP

function phpfunctionname{
$id= wpdb->get_results("SELECT id from mycats");
$ids .='';
foreach($id = $value){
ids=$value-.id;
};
echo json_encode(array('ids' => $ids));
};

是的,您可以嵌套 ajax 回调。但首先我们可能想回顾一下我们在这里讨论的内容。

JSON代表javascript object notation。它不是一种数据类型,而是一种将 javascript 对象编码为文本字符串的方法,以便可以轻松存储/传输。https://www.w3schools.com/js/js_json_intro.asp https://www.w3schools.com/js/js_json_intro.asp

jQuery是一个javascript库。它基本上是普通 JavaScript 的语法糖。https://jquery.com/ https://jquery.com/

PHP是一种服务器端语言,用于接收客户端请求、处理请求并返回响应。您不从客户端调用 php 函数。您提出请求,服务器决定如何响应。https://www.php.net/ https://www.php.net/

顺便说一下,如果您希望从同一 URL 返回不同的数据,则必须将其添加到选项对象中,然后处理该服务器端。客户端会是这样的:

jQuery.post(my_ajax.ajax_url, { action: 'myphp', return_type: 'string' })
  .done(function(data) { //data will be a string
    jQuery('#adivID').html(data);

    //this part doesn't make sense, because if the data is a string,
    //it won't have an 'id' property. But maybe in your actual code this
    //does make sense. So this is just an example of how nesting works.
    jQuery.getJSON(my_ajax.ajax_url, { ids: data.ids, return_type: 'json' })
      .done(function(json) { //json will be an object
        //do stuff with the object
      })
      .fail(function() {
        //response was probably not properly json formatted
      });
  })
  .fail(function(xhr, status, error) {
    console.log(xhr.responseText);
    alert(error);
  });

jQuery.post() https://api.jquery.com/jquery.post/ and jQuery.getJSON() https://api.jquery.com/jquery.getjson/只是短手jQuery.ajax() https://api.jquery.com/jquery.post/,因为它们需要更少的参数,并且除非您正在做更复杂的事情,否则会使您的代码更具可读性。

编辑(因为您添加了 php 代码):

我对 wordpress 不熟悉,需要读几遍才能尝试弄清楚你的代码在做什么。但我从docs https://developer.wordpress.org/reference/classes/wpdb/,你可能想要这样的东西:

$ids = $wpdb->get_results("SELECT id FROM mycats", ARRAY_N); //returns an indexed array of ids

switch($_POST["return_type"]) {
  case "string": //returns a comma separated string of ids
    echo implode(", ", $ids);
    break;
  case "json": //returns a json array of ids
    echo json_encode($ids);
    break;
}

但话又说回来,getJSON()将会失败,因为post()将返回一个字符串。如果不确切知道您想要实现什么目标,就很难提出代码建议。可能还值得注意的是,在 php 中object https://www.php.net/manual/en/language.types.object.php不同于关联数组 https://www.w3schools.com/php/php_arrays_associative.asp不同于索引数组 https://www.w3schools.com/php/php_arrays_indexed.asp。此外,所有变量都以$. wpdb != $wpdb如果你没有因此而损失几个小时,那么你的 php 还没有写够,哈哈。

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

jquery 在同一函数中使用两个完成回调,一个具有数据类型 json,一个不具有数据类型 的相关文章

  • jQuery:检查字段的值是否为 null(空)

    这是检查字段值是否为的好方法null if person data document type value NULL 或者 还有更好的方法 字段的值不能为空 它始终是字符串值 该代码将检查字符串值是否为字符串 NULL 您想检查它是否是空字
  • Javascript 图像 src 属性返回错误值

    我有一些 javascript 代码附加到一个带有 onclick 的按钮 代码如下 function ondelete var getDiv document getElementById imgdiv var lb img imgdiv
  • jQuery 绑定 ajax:成功无法在 Rails 3 应用程序中为新创建的(ajax)项目工作

    编辑这篇文章是因为我发现问题实际上在于rails无法绑定到ajax success函数 使用导轨3 2 3 感谢您花时间阅读并尝试提供帮助 我在 ajax success 删除项目上添加一个简单的淡出功能 如下所示 document rea
  • DOM 属性更改时触发事件

    有没有办法在属性更改时触发事件 可能是自定义的 比方说 当IMG src或DIV的innerHtml发生变化时 注意 自 2012 年起 突变事件已从标准中删除 现已弃用 有关如何使用其替代品 请参阅其他答案或文档 MutationObse
  • 如何正确设置 100% DIV 高度以匹配文档/窗口高度?

    我有一个包装器 位于中心位置 并带有 y 重复的背景图像 div some content div wrapper width 900px margin 0 auto 0 auto background image url image jp
  • 是否可以使用 jQuery 从 SQL Server 检索数据?

    是否可以使用 jQuery 从 SQL Server 检索数据并使用 HTML 控件显示数据 jQuery 被设计为在浏览器环境中运行 所以这是一个具有 DOM 的环境 具有 JavaScript 支持 显然 等等 要从 MS SQL Se
  • jQuery UI - 可拖动在放置后无法立即工作

    HTML div class character list div class character list container div img class 1 src http ahna web44 net img charas 13 p
  • 如何使用 jQuery Nestable 插件和 Codeigniter 创建子菜单?

    我在用着jQuery 可嵌套插件 with 代码点火器 3为网站创建 5 级菜单 这是一个很好的解决方案 用户可以通过拖放来更改菜单项的级别和位置 然而 我的下面的函数只能创建第一级菜单 当我更改为菜单项的子级 2 3 4 5 时 它对我不
  • jquery 克隆组合框无法运行

    我有下表 当我按下第一个按钮时 我调用 jquery 来克隆第一行并添加新行 table class table table striped table bordered bootstrap datatable style font siz
  • 如何更改 localStorage 项中的单个值?

    我正在尝试更改本地存储中的值 此项是复选框的状态 我希望 每次选中复选框时都将该复选框的值设置为 true 或 false 我尝试了很多方法 直到我意识到不使用 JSON 就无法更改值 要添加我使用的值 localStorage setIt
  • 无法将 event.target 转换为字符串

    为了识别用户单击的元素 我尝试使用事件对象target document click function e var str e target toString console log str if str indexOf some clas
  • 隐藏/显示切换具有相同类名的单独 div

    我有一个 UL 列表 每个 LI 都有一个隐藏的 DIV 以及一个显示隐藏 DIV 的 更多信息 链接 但是 单击此按钮也会显示所有其他 LI 的隐藏 DIV 我怎样才能只隐藏 显示 LI 中的 DIV 而不显示所有其他隐藏的 DIV 如果
  • 在 Adob​​e Air 中访问 iframe 的内容

    我在弄清楚如何访问 Air 中 iframe 中的内容时遇到了很多麻烦 这是我一直在测试的一些示例 jquery 代码 document ready function frame ready function air trace frame
  • $.each 中的 if 语句,Jquery

    我正在基于从 WebMethod 返回的 JSON 数据构建一些 html 我需要知道如何省略某些 elements based on if a particualr value is present or not I ve got thi
  • Summernote onKeyup 事件未按预期工作

    我将 Summernote 编辑器应用于文本区域 我希望当我在编辑器中键入一些文本时 该文本应反映在 div 中 因此我有一个文本区域和一个 div result 其中应在每次按键时写入更改事件
  • JavaScript 日期 + 7 天

    这个脚本有什么问题 当我将时钟设置为 29 04 2011 时 它会添加2011年4月36日在星期输入 但正确的日期应该是6 5 2011 var d new Date var curr date d getDate var tomo da
  • AJAX 与 Facebook 身份验证

    我已经构建了一个完全基于 AJAX 的应用程序 它没有页面刷新并使用 AJAX 加载所有内容 现在我想以一种不会重定向用户进行页面刷新的方式嵌入 Facebook 身份验证 目前 Facebook 的工作方式如下 用户通过单击 Facebo
  • 针对较小屏幕的拆分表行

    我有一个固定宽度为 960px 有 5 列的表格 当我在移动设备中查看时 我想制作第 3 4 5 列 看起来就像在下一行 有什么方法可以让 CSS 打断一行 使其看起来像这样 但是 还保留原来的HTML代码吗 您可以使用 FlexBox f
  • 如何在禁用按钮上启用 Bootstrap 工具提示?

    我需要在禁用的按钮上显示工具提示 并在启用的按钮上删除它 目前 它的工作原理是相反的 扭转这种行为的最佳方法是什么 rel tooltip tooltip
  • 语义 UI 表单验证 - 仅当值不为空时验证某些表单字段

    我有一个表单 其中包含必填字段和可选字段 我正在使用语义 UI 的表单验证行为来验证字段 然而 我想要实现的是 表单验证行为仅在可选字段具有值时才验证可选字段 可选字段示例 div class field div

随机推荐