没有调用JQuery成功回调或?

时间:2012-01-12 19:03:42

标签: jquery html

我搜索过很多帖子,但我找不到任何适合我的答案。现在我将尝试解释我的问题。

我有一个简单的jQuery脚本,可以执行一些ajax请求。它很简单:

print("
<script>
    function buscaCaracteristicas(idTotalizador){  
        var target = '../../ajax/doSomeSearch.php';
        $.ajax({
            url: target,                 
            //dataType: 'html',
            dataType: 'text',
            type: 'POST',
            success: function(msg){
                alert(msg);
            }
        });
    }
</script>
");

PHP页面执行此操作:

<?php
    $ret = "<p>hello world</p>";
    exit($ret);
?>

我也试过通过$ .html(msg)将返回数据放在HTML元素上。 问题是:警告或回调上的$ .html()永远不会触发,虽然在firebug上我可以检查请求是否有返回代码200 OK。

请注意,函数代码被包装到PHP print(“”)命令中,返回dataType是HTML,这是我真正需要的(不能使用JSON)。

有什么神奇的建议吗?提前谢谢。

已解决:根据Splash-X建议将dataType更改为“text”。

3 个答案:

答案 0 :(得分:1)

尝试这种方式:

<?php
    $ret = "<p>hello world</p>";
    echo $ret;
?>

并查看结果

更新的代码:

<?php
        if(isset($_POST['value_s']))
        {
          $ret = "<p>hello world</p>";
          echo $ret;
        }
        else {
        echo "Nothing received !";
       }
?>

和javascript:

$.ajax({
            url: target,                 
            //dataType: 'html',
            data: { "value_s":true},   //or something different value for `value_s`
            dataType: 'text',
            type: 'POST',
            success: function(msg){
                alert(msg);
            }
        });

答案 1 :(得分:0)

你需要你的php页面将$ret的值返回给你的ajax调用;尝试以下方法:

<?php
    $ret = "<p>hello world</p>";
    return $ret;
?>

答案 2 :(得分:0)

我们已将问题跟踪到AJAX请求的dataType属性:

 print(" 
 <script> 
     function buscaCaracteristicas(idTotalizador){   
         var target = '../../ajax/doSomeSearch.php'; 
         $.ajax({ 
             url: target,                  
             dataType: 'html' ,
             type: 'POST', 
             success: function(msg){ 
                 alert(msg); 
             } 
         }); 
     } 
 </script> 
 "); 

我们的建议是添加错误handeler并更改dataType:

      $.ajax({ 
             url: target,                  
             dataType: 'html' ,
             type: 'POST', 
             success: function(msg){ 
                 alert(msg); 
             },
             error: function(){
                  alert('error occured');
             }
         }); 

收到错误警报后,我们建议删除dataType属性并让jQuery自动确定它或将其更改为文本。 OP决定将类型指定为文本并且有效:

      $.ajax({ 
             url: target,                  
             dataType: 'text',
             type: 'POST', 
             success: function(msg){ 
                 alert(msg); 
             }
         }); 

问题已解决