我有一个AJAX流程,该流程返回一个“有效负载”,其中每个顶级元素都有一个ID,该ID用于用匹配的ID替换现有元素(当前页面内)。
如果找不到要替换的ID,则“替换”会引发错误消息。
有时候,有效载荷的元素没有ID(可能出了点问题……),因此错误消息中的ID为“ undefined”,没有帮助。
在错误消息中“描述”此类元素的一种好方法是什么? innerHTML也许?或通过某种方式向上或向下导航直到找到ID?
示例:
// THIS = Element from AJAX payload
strElementID = $(this).attr("id");
if (typeof strElementID === "undefined")
{
// Warn if no ID
myErrorHandler("ReplaceWith content ID not valid [" + "*** DISPLAY SOMETHING USEFUL HERE ***" + "]");
} else
{
// Replace
objJQ = $("#" + strElementID); // Object to be replaced
if (objJQ.length === 0)
{
// Warn if ID valid, but not matched
myErrorHandler("ReplaceWith content ID not found [" + "#" + strElementID + "]");
} else
{
objJQ.replaceWith($(this).children());
}
}
有效负载示例:
<div>
<span id="FirstName">Fred</span>
<span id="LastName">Blogs</span>
<div id="Error">Customer is marked inactive</div>
<div>Warning: Customer does not have an address <span id="ErrorNo">#1234</span></div>
</div>
页面有
<body>
<p>First name: <span id="FirstName">FIRST NAME HERE</span></p>
<p>Last name: <span id="LastName">LAST NAME HERE</span></p>
<!-- note there is no element with ID=Error -->
</body>
替换有效载荷中每个在页面中具有匹配ID的ID。我想要所有未替换的错误记录。特别是如果有效负载元素没有ID
页面中不存在id =“ Error”,但由于它具有ID,因此足以进行调试以获取“ ID = [Error] not found”。但是第二次我得到“ ID = [Undefined]”(或者使用tagName我得到“ DIV”-其中可能有很多,并且其信息不足)
我希望找到的是一种聪明的方法,它可以显示足够的信息进行调试,而不会淹没错误消息框。也许一些innerHTML,或者如果我能找到一个ChildID。我一直在寻找关于可以轻松找到对日志记录有用的想法。
答案 0 :(得分:0)
只是想了解您的问题:
如果您的ID为“ anyId”
if ($("#anyId").length > 0) {
//// write a code to replace
}
您可以在更换之前进行预检查。因此,如果该ID存在,则进行替换。否则不做任何事情。从而防止异常。答案是基于我对您问题的理解。