jQuery.ajax函数中的html语法错误?

时间:2017-04-09 13:53:07

标签: javascript jquery ajax

我正在操作$ .ajax函数中的jSON数组,我对它的语法感到困惑。有一个错误,无法找到它。

 if(value['newVar'] === 1)
              {
              $productContainer.append("<div id='productBox' class='grid_3'>\n\
             <a href='product.jsp?id="+value['id']+"'><img src='"+value["image"]+"'/></a><br/>\n\
             <a href='product.jsp?id="+value['id']+"'><span class='black'>"+value['name']+"</span></a><br/>\n\
             <span class='black'>By "+value['company']+"</span><br/><span class='red'>RS."+value['price']+"</span>\n\
             <br/><br/><a href='#' onclick="foo(this)" pid="+value['id']+">REMOVE</a></div>");

             }  

错误发生在if块和RS."+value['price']+"</span>\n\之后的第4行,它表示缺少语句Uncaught SyntaxError: missing ) after argument list。我认为错误与我写的onclick="foo(this)"

的方式有关

任何帮助?

2 个答案:

答案 0 :(得分:1)

用单引号替换双引号。您正在使用双引号终止字符串并创建语法错误:

   ...<a href='#' onclick='foo(this)' pid='"+value['id']+"'>

答案 1 :(得分:0)

错误是由于最后一行引用误用:onclick="foo(this)" 你还有两个单引号丢失...
(在某个地方的字符串内...不会导致实际错误,但您之后会在生成的HTML中出现一些错误。)

您可以使用您选择的引号作为字符串包装来追加...
另一个用于字符串内部。

但是你必须注意不要“混合”它们! 一个是字符串包装器,另一个是字符串的一部分。

if(value['newVar'] === 1){
  $productContainer.append("<div id='productBox' class='grid_3'>\n"+
                           "<a href='product.jsp?id='" +value['id']+ "'><img src='" +value["image"]+ "'/></a><br/>\n"+
                           "<a href='product.jsp?id='" +value['id']+ "'><span class='black'>" +value['name']+ "</span></a><br/>\n"+
                           "<span class='black'>By " +value['company']+ "</span><br/><span class='red'>RS." +value['price']+ "</span>\n"+
                           "<br/><br/><a href='#' onclick='foo(this)' pid=" +value['id']+ ">REMOVE</a></div>");

}

<强>技巧:

  • 使用+符号连接您的行 它可以防止在字符串中包含多个制表符和空格 这是比每行末尾的跟踪斜杠\更好的做法。
  • 让您的变量在视觉上更加明显,以便能够更好地看到它们,就像我上面所做的那样 它还有助于检查丢失或误用的报价。