Jquery ajax没有PHP响应

时间:2011-08-17 19:18:36

标签: php jquery ajax

我的脚本运行正常,它提醒我数据已保存。但出于调试原因,我希望以html格式看到PHP(“Procees.php”)响应。 我可以在firebug中看到它,但我不知道如何使用jquery将其放入。 我的代码如下;

            var dataString ='doctype='+ doctype + '&paytype=' + paytype + '&docno=' + docno + '&bookno=' + bookno + '&prname=' + prname +'&pename='+pename+'&paydate='+paydate+'&inpdate='+indate 
        +'&e1='+e1 +'&e2='+e2 +'&e3='+e3 +'&e4='+e4 +'&e5='+e5 +'&e6='+e6 +'&e7='+e7 +'&e8='+e8 
        +'&accname1='+accname1 +'&accname2='+accname2 +'&accname3='+accname3 +'&accname4='+accname4 +'&accname5='+accname5 +'&accname6='+accname6 +'&accname7='+accname7 +'&accname8='+accname8 
        +'&dr1='+dr1 +'&dr2='+dr2 +'&dr3='+dr3 +'&dr4='+dr4 +'&dr5='+dr5 +'&dr6='+dr6 +'&dr7='+dr7 +'&dr8='+dr8
        +'&cr1='+cr1 +'&cr2='+cr2 +'&cr3='+cr3+'&cr4='+cr4 +'&cr5='+cr5 +'&cr6='+cr6 +'&cr7='+cr7 +'&cr8='+cr8 +'&ref='+ref;


        //alert (dataString);return false;
        $.ajax({
        type: "POST",
        url: "bin/process.php",
        data: dataString,
        cache:false,
        datatype: 'json',               
        success: function(data) {

        $('#display').html("<h2>Data submitted!</h2>")
        .append("<p>Wait........</p>")
        .hide()
        .fadeIn(1500, function() {
        $('#display').append("<img id='checkmark' src='images/check-black.jpg' />");
        $('#display').html("<h3>Being Processed...</h3>")
        .fadeIn(1500, function() {
        $('#display').append("Saved <img id='checkmark' src='images/check-black.jpg' />")
        $('#thisfrm').get(0).reset();
        $("#indate").val(indate)






        });

        });
        }
        });


        return false;   

我的PHP回声

                echo 'This is processing file.\n';


            $doctype = $_REQUEST['doctype'];
            $paytype = $_REQUEST['paytype'];
            $docno = $_REQUEST['docno'];
            $bookno = $_REQUEST['bookno'];
            $prname = $_REQUEST['prname'];
            $pename = $_REQUEST['pename'];
            $paydate = $_REQUEST['paydate'];
            $inpdate = $_REQUEST['inpdate'];
            $ref = $_REQUEST['ref'];


            echo $doctype."<br>";
            echo $paytype."<br>";
            ....
            ... and so on

但网页上没有显示任何内容。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

你需要json_encode你的响应,因为你的jQuery期待json!

echo json_encode(array("doctype"=>$doctype, "paytype"=>$paytype));

答案 1 :(得分:1)

在AJAX请求期间由PHP输出的数据将位于data回调函数的success变量中。如果要将数据附加到页面上,则需要在成功函数中执行此操作。

$.ajax({
    type: "POST",
    url: "bin/process.php",
    data: dataString,
    cache:false,          
    success: function(data) {
        // the data variable contains all PHP output during this request
        $('#display').html(data);
    }
});

另请注意,您的脚本当前指定它是一个JSON请求 - jQuery应该将输出视为JSON数据。但是,您正在PHP片段中输出text / html数据。要么a)将html附加到一个变量中,然后调用print json_encode($mydata);,或者b)从请求中删除datatype属性。 jQuery将“自动检测”响应类型。上面的例子假设您没有更改PHP代码,下面是有关如何正确使用JSON的详细信息(更改为需要的PHP)。

要执行JSON方法,而不是使用echo,请使用变量:

$html = '';
$html .= 'Doctype: '.$doctype;
$html .= 'Something elese: '.$something_else;
// etc...
die(json_encode(array('html'=>$html)));

然后你的jQuery ajax函数看起来像这样:

$.ajax({
    type: "POST",
    url: "bin/process.php",
    data: dataString,
    cache:false,
    datatype: 'json',           
    success: function(data) {
        $('#display').html(data.html);
    }
});

答案 2 :(得分:0)

将此功能放入您的成功功能中。

$('#display').append(data);