0

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

SpecialGroups":"a","NationalAudits":"na","SpecialInterests": "

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

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

欢迎任何建议,谢谢。

4

1 回答 1

1

如果您使用的是 AJAX,您可以传递一个Object Literal或使用 de 数据构建查询字符串:例如

 //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+$/, "");
  }
于 2013-04-05T14:06:11.067 回答