[英]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.