Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php文件无法通过ajax调用工作_Php_Ajax - Fatal编程技术网

php文件无法通过ajax调用工作

php文件无法通过ajax调用工作,php,ajax,Php,Ajax,我有下面的ajax函数,它是从一个表单按钮调用的,该按钮获取下面php循环中使用的数字。php文件加载,但代码在“需要带红色星号*的字段”后停止工作 任何帮助都会很好 function loadMulti() { var num_to_enter = $('#num_to_enter').val(); $.ajax({ type: "POST", url: "myphpfile.php", dat

我有下面的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++;
}
?>

带红色星号*的字段是必填字段
此处的html表单由$num\u重复输入
更改此选项:

data: "num_to_enter=" + num_to_enter,
为此:

data: {num_to_enter: num_to_enter},
。文档确实说它可以接受字符串,但在这种情况下,您必须自己序列化它;让jQuery处理这个问题更容易

关于PHP:确保在while循环中增加
$i
,否则它永远不会结束,正如@putvande所指出的,并确保包含一个结束标记


最后,将此更改为:
num\u to\u enter=$\u POST[“num\u to\u enter”]到此:
$num\u to\u enter=intval($\u POST[“num\u to\u enter”])
强制PHP将其视为一个整数。

您的PHP脚本“运行”良好,但由于从未更新
$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++; 
    }
?>

带红色星号*的字段是必填字段
此处的html表单由$num\u重复输入

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

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更改为数组。

您的HTML无效,
不是自动关闭的。您从未在PHP文件中更新
$i
,因此它可能会以一个永无止境的循环结束。您知道您在$(“#multi”).load(myphpfile.PHP')处缺少一个引号吗?应该是$(“#multi”).load('myphpfile.php')。嗯,它在组织代码中,对不起,这里输入错误;这不是真的,它可以是字符串或对象。请参阅我的编辑。jQuery似乎很容易正确处理那里的字符串,如中所示。我刚刚测试了
数据:“num_to_enter=“+num_to_enter
,效果很好。我更改了数据:“num_to_enter=“+num_to_enter,改为:data:{num_to_enter:num_to_enter},确保上面的表单标签已关闭编辑,但仍然得到相同的结果。我将代码更改为您的建议,现在php文件根本不加载????我甚至将注释从$(“#multi”).load(myphpfile.php')中删除;另外,为了回答您的问题,html表单会按照用户选择的数字重复-$num_to_entre我应该添加我添加了一个警报,变量num_to_enter在那里,我在php文件中有一个它的回显,但当文件加载时,它不会回显它。如果我添加了一个die语句,直接转到php文件,而不使用ajax,它就会通过并打印表单。似乎只有php在通过ajax加载时无法工作。还有其他想法吗?????你用firebug检查过吗?我不知道怎么做,对不起!