【问题标题】:Ajax call back not called. How to tackle this?未调用 Ajax 回调。如何解决这个问题?
【发布时间】:2013-12-06 09:24:08
【问题描述】:

我再次在这里征求您的建议。我有一些 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>";
    }
    ?> 
    

当我通过 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).");";

请帮我解决这个错误。

【问题讨论】:

  • 我严重怀疑你是在用 Firebug 调试 PHP。当您将 PHP 和 Javascript 混合在一起时,您要实现的目标非常不清楚 2
  • 你为什么要设置dataType:'JSONP'
  • 你的意思是两个for循环吗?如果是,那么请先访问 web.guru99.com 你可以看到我正在实现 php 代码编辑器。所以php代码根本不用关心,而且
  • 实际上所有代码都在运行,唯一的问题是for循环。你可以在这里查看 - web.guru99.com。只有这个 for 循环没有运行,所以我不确定是什么问题,但是 ajax 调用的错误显示了这个错误:jQuery110106354119750428449_1386321122498 没有被调用
  • 在我看来,codeguru 网站的 PHP 解释器存在错误,该循环应该没有问题

标签: javascript php jquery ajax callback


【解决方案1】:

经过一些测试,我的问题是网址中的++,尝试编码:

encodeURIComponent

因为这对我有用:

for ($x=0; $x<=10; $x%2B%2B)
  {
  echo "The number is: $x <br>";
  }

...

+ = %2B

服务器得到了这个: ($x=0; $x

【讨论】:

【解决方案2】:

替换你的代码
<?php
$opstr = "";
for ($x=0; $x<=10; $x++)
 {
   $opstr .= "The number is: $x <br>";
 }
echo $opstr;
exit();
?> 

并尝试再次执行您的 ajax 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2022-06-12
    • 2019-02-18
    相关资源
    最近更新 更多