为什么我的ajax不会运行?没有错误被抛出

时间:2018-01-24 11:35:24

标签: javascript php jquery ajax

我试图获取按钮的id,当它点击它时通过AJAX进行处理,如index.php中所示,只是简单地回显它。

当我这样做时,PHP告诉我postid is an undefined index。请问这里有什么问题?

由于我是AJAX的新手,我正在关注youtube video

的index.php:

<button type='submit' id=8 onclick='addToCart(this.id)'></button>
function addToCart($id) {
  var idStored = $id; //When the button is clicked it passes the id. Even .val() wouldn't work
  $.post('../Cart.phtml',{postid:idStored}, function(data){
    window.alert(data); //Just for testing and conforming the code runs.
  });
}

CartPage.php:

<?php
  $name = $_POST['postid'];
  echo $name;
?>

非常感谢,任何帮助或指导都会很棒。

2 个答案:

答案 0 :(得分:0)

首先将event对象发送到如下方法:

<button type='submit' data-id="8" onclick='addToCart(event, this.id)'></button>

$.post发送内容类型为application/json的ajax请求,请求对象为form-data格式的 NOT 且位于request payload格式。

function addToCart(e, $id) {
  e.preventDefault();
  var idStored = $id; //When the button is clicked it passes the id. Even .val() wouldn't work
  $.post('../Cart.phtml',{postid:idStored}, function(data){
    window.alert(data); //Just for testing and conforming the code runs.
  });
}

要阅读request payload中的PHP,请执行以下操作:

CartPage.php:

<?php
  // read request payload json data    
  $data = json_decode(file_get_contents('php://input'));
  $name = $data ['postid'];
  echo $name;
?>

答案 1 :(得分:0)

最简单的方法是使用onClick()函数。

//using form and type=”submit” is not needed
<button id=8 onclick='addToCart(this.id)'></button>

但是如果你想通过表单来做,你必须阻止表单的默认行为。

$("#cartForm").submit(function (e) {
    e.preventDefault();

});