JSON字符串中未终止的字符串文字,带有来自带有HTML标记的SQLServer的值

时间:2013-04-05 12:56:51

标签: javascript html sql-server ajax json

当我从此页面的下拉列表中选择“Breast”时,我一直在尝试解决我在Firebug中遇到的“未终止的字符串文字错误” - http://wftp.whclpreview.com/search.html并点击提交按钮。该错误指向我以粗体突出显示的引号 -

SpecialGroups “:” 一 “ ”NationalAudits“: ”NA“, ”SpecialInterests“:

基本上,此错误是对ASP.NET函数的$ .ajax调用的结果,该函数以JSON格式从SQLServer数据库(包含名为SpecialInterests的字段)返回数据。该数据库附加到管理员,该管理员允许用户通过CKEDITOR插件格式化文本。

如果文字很简单,那么一切都还可以,但如果它包含任何HTML标签或换行符,那么我会收到上述错误。

欢迎任何建议,谢谢。

1 个答案:

答案 0 :(得分:1)

如果您使用的是AJAX,则可以传递 Object Literal 或使用de data构建查询字符串:例如。

 //if the variable contains HTML string,
 //ensure to encode it before sending the request
 var note = "  <strong>Important:</strong><br/> Additional notes. ";
 note = encodeHtml(note);

 //Object Literal
 var params = { "date": date, "expiry": expiry, "priority": priority, "note": note };

 //Query string to append to the url
 var paramsUrl = buildUrlParams(params).join("&");

  $.ajax({
    type: "POST",
    url:  "myservice/client",

    //ugly way
    //data: "date="+date+"&expiry="+expiry+"&priority="+priority+"&note="+note,

    //passing data as Literal Object        
    data: params,

    //passing data as querystring
    //data: paramsUrl,

    success: function(data){ alert(data); }
  });

  //Creates an array of parameters to build an URL querystring
  //@obj: Object to build the array of parameters
  function buildUrlParams(obj) {
      return $.map(obj, function(value, key) {
          return key + "=" + value;
      });
  }

  //Encodes the HMTL to their respective HTML entities
  //@text: the HTML string to encode
  function encodeHtml(text) {
    var div = document.createElement("div");
    if ("innerText" in div) div.innerText = text;
    else div.textContent = text;
    return div.innerHTML.replace(/^\s+|\s+$/, "");
  }