[英]Ajax post successful (shown in browser) but no data in $_POST
因此,我是PHP / Javascript / HTML的初学者。 这是我的页面的样子:我有几种形式,每种形式都有一个下拉菜单。 然后,我有一个按钮(在代码中,它位于表单外部)以提交所有所述表单。 这是我的按钮及其功能。
<input type="button" name="order_button" onclick="myFunction()" value="Place Order">
<script>
function myFunction() {
<?php
$conn = new mysqli("localhost", "root", "secret", "judal");
$all_cards_q = "SELECT * from card";
$result = $conn->query($all_cards_q);
while ($row = $result->fetch_assoc())
{ ?>
$.ajax({
type: "POST",
url: "Proj-HOME.php",
data: $('<?php echo $row["cardForSub"]; ?>').serialize(),
success: function() {
alert("WOOO SUCCESS!");
}
});
//return false;
//document.getElementById('<?php echo $row["cardForSub"]; ?>').submit();
<?php
}
?>
}
</script>
我在chrome中收到状态代码“ 200 OK”,但是$ _POST不包含任何内容(发布后我正在使用print_r)。 我被困了两天,试图找到一个答案,但还没完全找到适合我情况的答案。 提前致谢!
**编辑:**这是我的表单代码:
<div class="container">
<div class="row">
<div class="col-md-9">
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
?>
<div class="col-sm-4 col-lg-4 col-md-4">
<div class="thumbnail">
<!-- <img src="http://placehold.it/320x150" alt=""> -->
<img src="pics/cards/<?php echo $row["cardName"] ?>.jpg" alt="" border=3 height=150 width=100>
<div class="caption">
<font color=#3333FF size=5 face="Century Gothic">
<p><?php echo $row["cardName"] ?></p>
</font>
<p></p>
<h4><b>Php <?php echo $row["cardPrice"] ?>.00</b></h4>
</div>
<div class="ratings">
<p class="pull-right"> <?php echo rand(10,100) ?> reviews</p>
<p>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
</p>
<font color=#000000><p>Quantity: </p></font>
</div>
<form action="javascript:true;" name="<?php echo $row["cardForSub"]; ?>" id="<?php echo $row["cardForSub"]; ?>">
<select class="form-control" name="<?php echo $row["cardNickname"]; ?>" id="<?php echo $row["cardNickname"]; ?>">
<?php
$counter = 0;
while($counter <= $row["stock"]) {
?>
<option><?php echo $counter ?></option>
<?php
$counter++;
}
?>
</select>
</form>
</div>
</div>
<?php
}
}
else echo "No cards in database.";
?>
</div>
</div>
我自称没有jQuery技能,但对我来说,函数似乎有些不对劲〜您在其中调用$(document.getElementById()).serialise()
-我认为您不需要在其中使用document.getElementById
。 另外,将html,javascript和php稍微分开会更整齐...并且,就像@Raj指出的一样,url应该更可能以斜杠开头而不是以斜杠结尾。
<html>
<head>
<title>Form/ajax</title>
<script>
<?php
$conn = new mysqli('localhost', 'root', 'secret', 'judal');
$all_cards_q = 'SELECT * from card';
$result = $conn->query( $all_cards_q );
while( $row = $result->fetch_object() ){
$cfs_id=$row->cardForSub;
}
$conn->close();
echo "var cfs_id='{$cfs_id}';";
?>
function myFunction() {
$.ajax({
type: 'POST',
url: '/Proj-HOME.php',
data: $( cfs_id ).serialize(),
contentType: 'application/json;charset=utf-8',
success: function() {
alert('WOOO SUCCESS!');
}
});
}
</script>
</head>
<body>
<form>
<input type='button' name='order_button' onclick='myFunction()' value='Place Order'>
</form>
</body>
</html>
Issue 1 :
目标页面Proj-HOME.php/
这意味着命名为文件index.php
或index.html
内部Proj-HOME.php
我猜您正在尝试将页面发布到Proj-HOME.php/
。 如果是这样,请在文件名后删除/
,即仅拥有像这样的Proj-HOME.php
Note 1 :
尝试在Proj-HOME.php
打印一些变量,并尝试在ajax成功事件中查看,以便确保您指向的页面正确。
Note 2 :
检查是否包括了使该事件起作用的jquery库,还尝试在页面源代码中使用这些代码,以确保可以在页面中呈现这些代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.