Ajax发布成功(在浏览器中显示)但$ _POST

时间:2015-11-13 15:54:21

标签: javascript php jquery html ajax

所以我是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> 

我得到一个&#34; 200 OK&#34; chrome中的状态代码,但$ _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>

2 个答案:

答案 0 :(得分:0)

我自称没有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>

答案 1 :(得分:0)

Issue 1 :

目标网页Proj-HOME.php/这意味着index.php

中名为index.htmlProj-HOME.php的文件

我猜您要发布到Proj-HOME.php/页面。如果是这样,请删除文件名后面的/,即单独使用此Proj-HOME.php

Note 1 :

尝试在Proj-HOME.php中打印一些变量并尝试查看ajax成功事件,以便确保指向正确的页面。

Note 2 :

检查是否包含jquery库以使此事件有效,还尝试在页面源中使用这些代码,以便确保在页面中呈现这些代码。