jQuery Ajax调用将无法完成

时间:2019-01-13 17:00:56

标签: jquery ajax

我具有以下单击按钮时调用的功能。该函数最多完成并包括将dataString打印到控制台,但是ajax调用永远不会完成。它只是使用空白的GET查询字符串重定向到同一页面。我已经看了很长时间了,我不知道为什么。如果我遗漏了一些简单的东西,我对此表示歉意,但其他类似的电话确实可以正常工作,而事实并非如此。

    $(document).on('click', '#addTreasure_btn', function(){

    var itemName = $("#treas_search").val();
    var qty = $("#numofitems").val();
    var tr_play = $("#play_search").val();
    var broken = $("input[id='treasbrok']").is(':checked');

    var dataString = "qty="+qty+"&itemName=" + itemName +"&tr_play=" + tr_play+"&broken="+broken+"&playerName="+player;

    console.log(dataString);

    $.ajax({
        type: "POST",
        url: "add_treasure.php",
        data: dataString,
        cache: false
    });

});

谢谢您的帮助。

2 个答案:

答案 0 :(得分:2)

  1. 假设addTreasure_btn是type = submit或至少不是type = button,则需要更改为type = button或阻止提交表单/页面
  2. 您需要成功和错误处理程序
    data: dataString, success: function(returndata) { console.log(returndata)}, error: function(jxhr) { console.log(jxhr)},

或者执行$ .post:

请参阅文档:$.ajax$.post

$(document).on('click', '#addTreasure_btn', function(e) {
  e.preventDefault(); // in case you do not have type="button"
  var itemName = $("#treas_search").val();
  var qty = $("#numofitems").val();
  var tr_play = $("#play_search").val();
  var broken = $("input[id='treasbrok']").is(':checked');

  var dataString = "qty=" + qty + "&itemName=" + itemName + "&tr_play=" + tr_play + "&broken=" + broken + "&playerName=" + player;

  console.log(dataString);

  $.post("add_treasure.php", datastring, function(result) {
    console.log(result)
  });

});

答案 1 :(得分:1)

您错过了两件事,首先是成功回调和声明了类型错误的type变量。

您应该这样做,因为我会告诉您:

$.ajax({
    method: "POST", // Use method keyword instead of type.
    url: "add_treasure.php",
    data: dataString,
    cache: false,
    success: function(data) { // Declare the success callback.
       alert("Something here!");
    }
});

如果您想添加更多参数,我建议您遵循以下条件:http://api.jquery.com/jquery.ajax/

希望这会有所帮助!