Ajax成功在控制台中显示消息

时间:2017-07-24 19:53:28

标签: javascript arrays json ajax

我有一个数组中的数据应该使用ajax发送到php文件。 我曾尝试使用console.log来显示正在发送的数组,并在数据成功发送时显示一条消息。但是我的控制台上没有显示任何消息。有人请告诉我我的代码有什么问题。< / p>

 var that = $(this),
    url = that.attr('action'),
    type = that.attr('method'),

    data = {};
    var cart = {};

    cart.item_name = miniform.elements['itemId'].value;
    cart.quantity = miniform.elements['quantityId'].value;
    cart.amount = miniform.elements['amountId'].value;
    cart.total = amount * quantity;

    var jsonString = JSON.stringify(cart);

   $.ajax({
    url: url,
    type: type,
    data:{data:jsonString},
    success: function(){
        console.log('Email Sent');
     }
    });
 console.log(jsonString);
}

2 个答案:

答案 0 :(得分:0)

最有可能发生的事情是您没有重新调整实际的成功消息,这就是为什么它没有被记录。而不是AJAX调用中的success函数,将其更改为always,看看是否得到了结果。您还需要在always函数中添加一个参数作为您的响应,如下所示:

$.ajax({
  url: url,
  type: type,
  data:{data:jsonString},
  always: function(result){
    console.log('Email Sent');
    console.log(result);
  }
});

正如评论中指出的那样,您应该进行error回调,这样您就可以随时知道是否有错误。这看起来像这样:

$.ajax({
  url: url,
  type: type,
  data:{data:jsonString},
  success: function(result){
    console.log('Email Sent');
    console.log(result);
  },
  error: function(error){
    throw new Error('Did not work');
  }
});

如果您可以展示您的PHP,我们可以为您提供帮助,并让您回复success回复。

修改 在浏览器中使用您的开发工具查看您的请求是否正在进行:

enter image description here

另外,请查看此JSBin以获取AJAX请求的工作示例:https://jsbin.com/wazanuwuge/edit?js,console

答案 1 :(得分:0)

正如其他人已经指出的那样,如果不撬开你的控制台/后端,很难说出了什么问题。我假设您要使用从表单收集的一些数据从服务器发送电子邮件,并且您的后端脚本和前端脚本都位于同一个域中。那么,你能做什么?

  1. 首先,检查您的函数是否应该发送数据 实际上已触发(将alert('test')放在... 该功能的开头);你得到的确是可疑的 控制台中什么都没有。也许你知道,但如果你想完成一些工作,你必须为你的行动分配一个功能(处理程序)。我的意思是应该有一个click事件处理程序,你应该在其中放置所有JS的东西。从您共享的代码片段中可以看出,这种处理程序的存在并不明显。这样的事情:$('.form_submit_btn').on('click', function() { // all your code goes here});
  2. 检查后端脚本是否真的有效,并发送电子邮件。     尝试直接通过url调用该脚本;
  3. 检查前端脚本是否实际发送数据并且能够     得到结果。创建一个简单的后端脚本     输出像#34; Hello world!&#34;并更改AJAX中的URL     打电话给它;
  4. 为您的AJAX功能添加错误处理程序;
  5. 虽然我想提一下这一行:

     cart.total = amount * quantity;
    

    对我来说很奇怪。你真的有这样的变数吗?它们不应该分别是cart.amountcart.quantity吗?