繁体   English   中英

php文件无法从ajax调用工作

[英]php file not working from ajax call

我有一个从表单按钮调用的ajax函数,它获取下面php循环中使用的数字。 php文件加载但代码在“带有红色星号的字段*是必需的”之后停止工作任何帮助都会很棒!

    function loadMulti() {
        var num_to_enter = $('#num_to_enter').val();
        $.ajax({
          type: "POST",
          url: "myphpfile.php",
          data: "num_to_enter=" + num_to_enter,
          success: function(){
        $("#multi").load('myphpfile.php')
          }
       });
        return false;
          }

和PHP:

<?php
$num_to_enter = $_POST["num_to_enter"];
echo $num_to_enter;
$i=1;
?>

<form class="my_form" name="addReg" id="addReg" method="post" />


            <span class="red">Fields With Red Asterisks * Are Required</span>



<?php
    while($i <= $num_to_enter){
?>
    The html form here repeated by $num_to_enter
<?php
  $i++;
}
?>

你的PHP脚本'工作'很好,但你最终在一个没有结束的while循环,因为你永远不会更新$i 你需要在while循环中递增它:

<?php
    $num_to_enter = $_POST["num_to_enter"];
    echo $num_to_enter;
    $i = 1; 
?>

<form class="my_form" name="addReg" id="addReg" method="post" />

<span class="red">Fields With Red Asterisks * Are Required</span>



<?php
    while ($i <= $num_to_enter) { 

       ?>The html form here repeated by $num_to_enter <?php

       // You need to increment this so the while loop stops when $i hits 
       // the same amount as $num_to_enter.
       $i++; 
    }
?>

对于初学者,您可以稍微清理一下代码。 看看这是否有帮助(测试及其工作)

JS档案

function loadMulti () 
{
    var num_to_enter = 2;//$('#num_to_enter').val();
    $.ajax({
        type: "POST",
        url: "temp.php",
        data: "num_to_enter=" + num_to_enter,
    }).done (function (data){  //success is deprecated
        $("#test").html (data);
    });
    return false;
 }

$(document).ready (function (){
    loadMulti ();
});

或许你想要一个js帖子?

function loadMulti () 
{
    var num_to_enter = 2;//$('#num_to_enter').val();

    $ ("#check").on ("click", function (){
        $.ajax({
            type: "POST",
            url: "temp.php",
            data: "num_to_enter=" + num_to_enter,
        }).done (function (data){  //success is deprecated
            $("#test").html (data);
        });
    });
    return false;
 }

$(document).ready (function (){
    loadMulti ();
});

PHP文件

<?php
  $num_to_enter = $_POST["num_to_enter"];
  $string = "";
  echo $num_to_enter;
  $i=1;

  while ($i <= $num_to_enter)
  {
        $string .= "The html form here repeated by {$num_to_enter}<br/>";
        $i++;
  }
?>


  <span class="red">Fields With Red Asterisks * Are Required</span>
  <?php echo $string; ?>

进行调用的PHP文件。

<!doctype html>
 <html>
  <head>
   <title></title>
   <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
   <script src='test.js'></script>
  </head>

  <body>
    <div id="test">test</div>
  </body>   
 </html>

或者与帖子

<!doctype html>
 <html>
  <head>
   <title></title>
   <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
   <script src='test.js'></script>
  </head>


  <body>
    <div id="test">results will show here.</div>
    <form class="my_form" name="addReg" id="addReg" method="post" />
        <input id="check" type="button" name="sendpost" value="Get Data">
    </form>
  </body>   
 </html>

编辑:添加了进行调用的php文件,我将.load()更改为.html()及其受尊敬的选择器。

此外,我不确定你是否希望消息打印出来一次,所以如果你需要它打印,只需将$ string更改为数组。

改变这个:

data: "num_to_enter=" + num_to_enter,

对此:

data: {num_to_enter: num_to_enter},

$.ajax()需要一个对象,而不是一个字符串 文档确实说它可以接受一个字符串,但你必须在那个场景中自己序列化它; 让jQuery处理它更容易。

关于PHP:确保在while循环中增加$i ,或者它将永远不会像@putvande所指出的那样结束,并确保包含结束</form>标记。

最后,改变这个: $num_to_enter = $_POST["num_to_enter"]; 对此: $num_to_enter = intval($_POST["num_to_enter"]); 强制PHP将其视为整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM