即使在成功的AJAX调用之后,jQuery也不会更新span

时间:2011-12-26 10:32:25

标签: php jquery html ajax

我有一个生成PDF文件的PHP脚本(我正在使用www.fpdf.org的fpdf)。我使用AJAX $ .post(.....)从html调用PHP。单击提交按钮时,跨度显示“请稍候...”。 PDF已生成但仍然显示“请稍候......”。范围没有得到更新。下面是AJAX调用的代码:

$(document).ready(function()
{
$("#genByDt").submit(function()
{
    $("#msg").text('Please wait....').fadeIn(1000);

    var otherValidations = validate(document.genByDt);
    if(otherValidations == false)
    {
        return false;
    }
    else
    {

        $.post("/pawn/fpdf/chittiCode/generateChitti.php",{ whichSubmitted:$('input[name = whichSubmitted]').val(), dateSelected:$('input[name = dateSelected]').val() }, function(data){

        var obj = $(data);              

        if($.trim($(obj,'body').text()) == 'success')
        {
            $("#msg").fadeTo(200,0.1,function(){
                $(this).text('Bills generated successfully !!').fadeTo(900,1);
                $('input[name = dateSelected]').val('');
            });

        }
        else if($.trim($(obj,'body').text()) == 'zeroBills')
        {
            $("#msg").fadeTo(200,0.1,function(){ 
                $(this).text('No bills for the selected date !!').fadeTo(900,1);
                $('input[name = dateSelected]').val('');
            });
        }

        });

        return false; //not to post the  form physically
    }
});

});

我知道问题出在IF条件中。 PHP返回一个字符串,但$(数据)是object类型[我通过使用alert(obj)找到了这个; ]。以下是PHP的一部分:

if($success == 1)
{
echo "success";
}
else
{
echo "zeroBills";
}

5 个答案:

答案 0 :(得分:0)

如果PHP返回一个字符串,那么data将是一个字符串,应该这样对待:

if (data === "success") {
   // your code here
} else if (data === "zeroBills") {
   // your code here
}

(您提到obj的类型为alert(obj);如果您说alert(data)会怎么样?)

答案 1 :(得分:0)

你期待什么?您获取了PHP脚本生成的字符串,并使用$(data)将其转换为jQuery对象。之后,它不再是一个字符串。

第二:您试图将obj下方的元素(body(根本不是选择器)与“成功”进行比较,而不将其添加到DOM中

为什么不首先将数据与“成功”进行比较?

if(data === "success")

答案 2 :(得分:0)

你真的需要那个作为对象吗?为什么不只是使用字符串?

if(data === 'success')
{}
else if(data === 'zeroBills')
{}

答案 3 :(得分:0)

具体来说就是这样:$.trim($(obj,'body').text()

为什么要将obj变量分配给data

尝试:

if(data == 'success')

答案 4 :(得分:0)

为什么不在PHP页面中使用jQuery $ .ajax函数:

回显'任何消息,如果成功';

标题('错误404:任何错误消息'); (故意发送错误代码,我不会重新编写语法)

成功:功能(html){$(" #messo")。html(html); }, 错误:function(x,e,t){$(" #messo")。html(t); } //" t"是'任何错误代码'