没有调用Ajax回调。如何解决这个问题?

时间:2013-12-06 09:24:08

标签: javascript php jquery ajax callback

我再次提出你的建议。我有一些AJAX调用来从我的编辑器运行代码,这是一个PHP在线编辑器。 (你们可以登记my site。)

我有一些ajax调用,用于发送编辑器的数据并接收输出。

问题:for循环未正确执行。

  1. 以下for循环程序成功执行

    <?php
    for($i=10;$i>1;$i--){
        echo "$i<br>";
    }
    ?>
    
  2. 虽然没有执行此for循环

    <?php
    for ($x=0; $x<=10; $x++)
    {
        echo "The number is: $x <br>";
    }
    ?> 
    
  3. 当我通过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).");";
    

    请帮我解决此错误。

2 个答案:

答案 0 :(得分:2)

enter image description here经过一些测试,问题是网址中的++,尝试编码:

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调用。