jQuery Ajax使用POST方法发送数据

5

我正在尝试在按钮的onclick事件中调用一个带有一些参数的PHP文件。它执行到jsfile.js中的alert语句。但是之后ajax部分没有被执行...请帮帮我。

main.html

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <script src="jsfile.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
            <button onclick="cart(0)"> hi </button>
            <p id="disp"></p>
    </body>
</html>

jsfile.js

function cart(id1) {
    var id = id1;
    alert("enterd " + id);
    document.getElementById("disp").innerHTML = "hi";
    $.ajax({
        url: "/add.php ",
        type: "POST",    
        data: {
            item_id: id,
        },
        success: function(response) {
            // document.getElementById("total_items").value = response;
            document.getElementById("disp").innerHTML = response;
        },
        error: function() {
            alert("error");
        }    
    });    
}

add.php

<?php
    if(isset($_POST['item_id']) && !empty($_POST['item_id'])) {
    // if(count($_POST)>0)
        echo "success";
        exit();
    }
?>

如果在您的“success”回调中放置了一个“alert”,那么会显示吗? - JohanP
我忘记在HTML文档的开头包含ajax脚本了。但即使加上了,成功部分仍然没有被执行。只有错误部分被执行了。 - deepak asai
从JQuery文档中: "type"(默认值为“GET”)...方法的别名。 - bloodyKnuckles
url:"/add.php ", 这个 add.php 文件是否位于网站根目录中? - bloodyKnuckles
2个回答

6
请在您的jsfile.js文件中,根据我在下面代码的注释提到的点进行更正。
function cart(id1) {
    var id = id1;
    alert("enterd " + id);
    document.getElementById("disp").innerHTML = "hi";
    $.ajax({
        url: "/add.php ",
        method: "POST", // First change type to method here    
        data: {
            item_id: id,
        },
        success: function(response) {
            document.getElementById("disp").innerHTML = response;
        },
        error: function(error) {
            alert("error" + error);
        }
    });    
}

为什么引用 id?它不是字符串,它是在 cart 函数顶部实例化的一个变量:var id=id1; - bloodyKnuckles
是的,你说得对,我已经更新了代码。 - Jason Guru

0

更改它并尝试

 type:"POST" ->  method: "POST"

如果您的 jQuery 版本是 >= 1.5,请按如下方式使用它。
$.ajax({
  url: "add.php",
  method: "POST",
  data: { item_id: id},
}).done(function(response) {
  ......
}).fail(function( jqXHR, textStatus ) {
  ......
});

在你的JS文件之前加载Jquery。

即使我将方法从类型更改为仅执行错误部分,是否必须包括“完成”和“失败”而不是“成功”和“错误”? - deepak asai
你在错误响应中得到了什么?使用开发者工具进行检查。 - Sagun Gautam
1
你的URL路径可能不匹配,或者服务器返回其他响应而触发了错误函数。 - Sagun Gautam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接