jQuery在另一个.html中输出.html并得到无意中的编码 - 我该如何解决这个问题?

时间:2011-09-01 07:01:45

标签: javascript jquery html debugging encoding

我有以下代码:

ajaxLoading = '\<p style="text-align:center; margin-left:auto; margin-right:auto; margin-top:200px; ' + 
'width:300px\"><img style="display:block; margin-left:auto; margin-right:auto" src="Images/ajax-loader.gif" alt="Processing Payment" />'  + 
'Processing your payment...</p>'
var errormessage = "<div style=\"padding-left:75px\"><h1 style=\"margin-top:50px\">Error</h1><p>" + data + 
"</p><p><a onClick=\"$('#divIDConfirmPayment').slideRightHide();$('#divIDCollectPaymentInfo').slideLeftShow();" + 
"$('#divIDConfirmPaymentResult').html(" + ajaxLoading + ");RequestPayment()\"> Click here to return to payment </a></p></div>";
                        $('#divIDConfirmPaymentResult').html(errormessage); 

根据Chrome开发工具,我输出的相关部分就是这个。如你所见,一个&lt;正在&amp; lt被转义,它正在破坏输出的其余部分。可能导致这种情况的原因是什么?

<a onclick="$('#divIDConfirmPayment').slideRightHide();$('#divIDCollectPaymentInfo').slideLeftShow();$('#divIDConfirmPaymentResult').html(&lt;p style=" text-align:center;="" margin-left:auto;="" margin-right:auto;="" margin-top:200px;="" width:300px"=""><img style="display:block; margin-left:auto; margin-right:auto" src="Images/ajax-loader.gif" alt="Processing Payment">Processing your payment...</a>

根据以下答案进行更新:

这非常有效:

var errormessage = "<div style=\"padding-left:75px\"><h1 style=\"margin-top:50px\">Error</h1><p>" + data + 
                        "</p><p><a onClick=\"$('#divIDConfirmPayment').slideRightHide();$('#divIDCollectPaymentInfo').slideLeftShow();" + 
                        "resetAjaxLoading('#divIDConfirmPaymentResult');\"> Click here to return to payment </a></p></div>";
                        $('#divIDConfirmPaymentResult').html('\'' + errormessage + '\'');   

            function resetAjaxLoading(domElement) {
                ajaxLoading = '<p style="text-align:center; margin-left:auto; margin-right:auto; margin-top:200px; ' + 
                        'width:300px\"><img style="display:block; margin-left:auto; margin-right:auto" src="Images/ajax-loader.gif" alt="Processing Payment" />'  + 
                        'Processing your payment...</p>'; 
                $(domElement).html(ajaxLoading);
            }

1 个答案:

答案 0 :(得分:1)

编辑: 实际上我不认为你可以在你的例子中的内联处理程序中定义html,如 onclick 。将单击处理程序移动到单独的定义(在脚本标记或单独的js文件中)。

您也可以尝试(假设 ajaxLoading 是一个变量)将用户点击链接后设置html推迟(请注意,我没有将ajaxLoading变量的内容放入errormessage变量中 - 在单击事件的句柄期间,字符串ajaxLoading将被计算为变量的值:

var errormessage = "<div style=\"padding-left:75px\"><h1 style=\"margin-top:50px\">Error</h1><p>" + data + "</p><p><a onClick=\"$('#divIDConfirmPayment').slideRightHide();$('#divIDCollectPaymentInfo').slideLeftShow();" + "$('#divIDConfirmPaymentResult').html(ajaxLoading);RequestPayment()\"> Click here to return to payment </a></p></div>";
                    $('#divIDConfirmPaymentResult').html(errormessage);