我再次提出你的建议。我有一些AJAX调用来从我的编辑器运行代码,这是一个PHP在线编辑器。 (你们可以登记my site。)
我有一些ajax调用,用于发送编辑器的数据并接收输出。
问题:for循环未正确执行。
以下for循环程序成功执行
<?php
for($i=10;$i>1;$i--){
echo "$i<br>";
}
?>
虽然没有执行此for循环
<?php
for ($x=0; $x<=10; $x++)
{
echo "The number is: $x <br>";
}
?>
当我通过FireBug运行时,我得到一个响应,说for循环在第二个循环(上面)的情况下变成了一个无限循环。
现在这是我的AJAX回调:
$.ajax({
type: 'GET',
url: 'exec.php',
data: code,
success: function(data)
{
alert(data);
$(loader).addClass("hidden");
var stdout = $(form).children('.stdout');
if (data.search("Parse error")>0)
{
var str = data.replace("<b>Parse error</b>: ","");
$(stdout).html(str);
$(stdout).removeClass('hidden');
}
else
{
$(stdout).html(data);
$(stdout).removeClass('hidden');
}
},
error: function(req, status, err) {
alert(status);
alert(err);
},
dataType: 'JSONP'
});
我在本地重新实现了这个编辑器并运行它;在FireBug中我收到此错误:
错误:未调用jQuery110106354119750428449_1386321122498
这是来自服务器的我的JSON回调代码:
echo $_GET['callback']."(".json_encode($script_output).");";
请帮我解决此错误。
答案 0 :(得分:2)
经过一些测试,问题是网址中的++
,尝试编码:
encodeURIComponent
因为这对我有用:
for ($x=0; $x<=10; $x%2B%2B)
{
echo "The number is: $x <br>";
}
...
+ = %2B
服务器得到了这个: ($ x = 0; $ x&lt; = 10; $ x) 所以它是无限循环,因为$ x保持为0
答案 1 :(得分:-1)
用
替换您的代码<?php
$opstr = "";
for ($x=0; $x<=10; $x++)
{
$opstr .= "The number is: $x <br>";
}
echo $opstr;
exit();
?>
并尝试再次执行ajax调用。