【问题标题】:jQuery not updating span even after successful AJAX call即使在成功的 AJAX 调用之后,jQuery 也不会更新跨度
【发布时间】:2011-12-26 19:32:16
【问题描述】:

我有一个生成 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
    }
});

});

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

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

【问题讨论】:

  • @KristerAndersson - 请帮帮忙!!!

标签: php jquery html ajax


【解决方案1】:

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

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

(你提到你通过说alert(obj)找到了obj的类型;如果你说alert(data)会发生什么?)

【讨论】:

    【解决方案2】:

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

    第二:您尝试将元素的内容与body 下方的选择器obj(根本不是选择器)进行比较,并获得“成功”,甚至无需将其添加到 DOM。

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

    if(data === "success")
    

    【讨论】:

      【解决方案3】:

      你真的需要它作为对象吗?为什么不直接使用字符串?

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

      【讨论】:

        【解决方案4】:

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

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

        试试:

        if(data == 'success')
        

        【讨论】:

          【解决方案5】:

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

          echo '如果成功则任何消息';

          header('错误 404: 任何错误信息'); (故意发一个错误码,我不记得语法了)

          成功:function(html) { $("#message").html(html); }, 错误:函数(x,e,t){$(“#message”).html(t); } // "t" 是'任何错误代码'

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-26
            • 2023-03-15
            相关资源
            最近更新 更多