当我从此页面的下拉列表中选择“Breast”时,我一直在尝试解决我在Firebug中遇到的“未终止的字符串文字错误” - http://wftp.whclpreview.com/search.html并点击提交按钮。该错误指向我以粗体突出显示的引号 -
SpecialGroups “:” 一 “ ”NationalAudits“: ”NA“, ”SpecialInterests“:”
基本上,此错误是对ASP.NET函数的$ .ajax调用的结果,该函数以JSON格式从SQLServer数据库(包含名为SpecialInterests的字段)返回数据。该数据库附加到管理员,该管理员允许用户通过CKEDITOR插件格式化文本。
如果文字很简单,那么一切都还可以,但如果它包含任何HTML标签或换行符,那么我会收到上述错误。
欢迎任何建议,谢谢。
答案 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+"¬e="+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+$/, "");
}