【问题标题】:Ajax post was received, but success is not calledajax帖子收到了,但是没有调用成功
【发布时间】:2016-06-03 10:30:14
【问题描述】:

我有一个供应商的数据表。最后一列有一个删除按钮,用于打开确认删除供应商的模式:

删除按钮:

<a data-toggle="modal" class="modalActivator" value="{{supp['supplierId']}}" name="{{supp['navn']}}" data-target="#deleteConfirmModal"><span class="glyphicon glyphicon-trash"></a>

模态:

<div class="modal fade" id="deleteConfirmModal" role="dialog">
<div class="modal-dialog modal-sm">    
  <!-- Modal content-->
  <div class="modal-content">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal">&times;</button>
      <h4 class="modal-title">You are about to delete:<br /></h4>
    </div>
    <div class="modal-body">
      <p>Do you want to continue?</p>
    </div>
    <div class="modal-footer">
      <button type="button" id="modal-delete" class="btn btn-primary"  data-dismiss="modal">Delete supplier</button>
      <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
    </div>
  </div>

</div>


通过单击“modal-delete”按钮,将 ajax 帖子发送到 url:/supplier/remove,从数据库中删除供应商。 在 url 上接收到数据并显示在控制台中,但不会触发 ajax 成功。

我尝试将数据类型更改为文本,但仍未触发。在 Chrome 网络工具中,帖子处于待处理状态

$('#modal-delete').click(function(e) {

  var data = {};
  data.supplierId = idToDelete;
  console.log(data);
  $.ajax({
    type: 'POST',
    data: data,
    dataType: "text",
    success: function(){ajax_success('I was posted!');},
    error: function(){console.log('nothing was posted with ajax');},
    url: '../api/supplier-list/remove',
    cache: false
  });

});
function ajax_success(mytext) {
  console.log(mytext);
}

Chrome 网络工具:

一般 请求网址:http://localhost:8080/api/supplier-list/remove?callback=jQuery220026602954184636474_1456116313463 请求标头 显示临时标题 接受:text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, /; q=0.01 内容类型:application/x-www-form-urlencoded;字符集=UTF-8 来源:本地主机:8080 引用者:/localhost:8080/api/supplier-list 用户代理:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 X-Requested-With:XMLHttpRequest 查询字符串参数 回调:jQuery220026602954184636474_1456116313463 表格数据 供应商编号:5

【问题讨论】:

  • 为什么是" dataType: "text" ?
  • 删除脚本怎么样?他有什么回报吗?尝试将 dataType 更改为 JSON
  • 查看node js控制台,确认接收到什么数据
  • 尝试删除 dataType: "text" 并检查一次
  • 我都试过了,dataType: 'text' 和 dataType: 'json' 在这两种情况下,收到的数据都是:{ supplierId: '5' } 我在另一个站点上还有另一个 ajax 帖子,几乎相同,并且我成功发布了文字。对象的验证在 jsonlint.com 上失败,因为供应商 ID 上没有引号。与其他有效的 ajax 帖子的不同之处在于,这个帖子是从模态启动的,而另一个是从 onchange 下拉菜单启动的

标签: jquery ajax node.js express


【解决方案1】:

我发现了问题。我犯了这个错误是因为我对 ajax 和 nodejs 很陌生。

数据已发送和接收。我不知道的是我必须从接收数据的文件中做出响应。 这是来自网址的代码:api/supplier-list/remove:

apiRouter.post('/supplier-list/remove/', function(req,res) {
  console.log(' I got it!! ' + req.body.supplierId);
});

我在代码中添加最后一行后,就触发了ajax的成功函数:

apiRouter.post('/supplier-list/remove/', function(req,res) {
  console.log(' I got it!! ' + req.body.supplierId);
  res.json('Data was found');
});

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2015-11-06
    • 1970-01-01
    • 2017-02-17
    • 2016-07-28
    • 2014-04-26
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多