Ajax done()或成功回调未在wordpress中触发

时间:2019-07-02 09:27:57

标签: jquery ajax wordpress callback

我正在使用Ajax调用来发出POST请求,随后对API进行了调用。然后返回结果。我最初使用的是触发成功的成功回调,但是由于某种原因它停止工作,并且我读到它已被完成替换,因此我尝试更改它。我不知道为什么,但是现在既不会成功也不会成功。我最近更新了浏览器,所以可能与它有关。我也在Wordpress中运行它。在网络标签中返回200,状态和消息编码为JSON。 jQuery版本是1.12.4。尽管Ajax调用已完成,但是控制台中没有任何登录,并且该对话框也没有打开。我该如何使用它?

$.ajax({
  type: 'POST',
  dataType: 'json',
  url: ajax_object.ajax_url,
  data: {
    'action': $action,
    'product_id': $product_id,
  },
  success: function(data) {
    console.log(data.message);
    $( "#dialog" ).text(data.message);
    $( "#dialog" ).dialog( "option", "title", "API - " + data.status );
    $( "#dialog" ).dialog("open");
  }
  });

$.ajax({
  type: 'POST',
  dataType: 'json',
  url: ajax_object.ajax_url,
  data: {
    'action': $action,
    'product_id': $product_id,
  }
}).done(function(result) {
    console.log(result.message);
    $( "#dialog" ).text(result.message);
    $( "#dialog" ).dialog( "option", "title", "API - " + result.status );
    $( "#dialog" ).dialog("open");
  });

1 个答案:

答案 0 :(得分:1)

从jQuery中删除dataType参数,AJAX在触发.done()之前会使用它的JSON转换失败,因为API中的JSON中缺少某些内容/错误。您可以通过在.done()之后添加.fail()进行检查,然后查看它如何触发错误。

$.ajax({}).done().fail(error => console.log(error) 
  

jQuery.ajax尝试根据   指定的dataType参数或由   服务器。如果转换失败(例如JSON / XML无效),则   错误回调被触发。

Ajax request returns 200 OK, but an error event is fired instead of success