我有以下代码:
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(<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);
}
答案 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);