- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我从通过 Ajax 调用的 REST 方法返回动态生成的 html 时,我正在替换页面上的 html,如下所示:
[HttpGet]
[Route("{unit}/{begdate}/{enddate}", Name = "QuadrantData")]
public HttpResponseMessage GetQuadrantData(string unit, string begdate, string enddate)
{
_unit = unit;
_beginDate = begdate;
_endDate = enddate;
string beginningHtml = GetBeginningHTML(); // This could be called from any page to reuse the same "header"
string bodyBeginningHtml = GetBodyBeginHTML();
string top10ItemsPurchasedHtml = GetTop10ItemsPurchasedHTML();
string pricingExceptionsHtml = GetPriceComplianceHTML();
string forecastedSpendHtml = GetForecastedSpendHTML();
string deliveryPerformanceHtml = GetDeliveryPerformanceHTML();
string endingHtml = GetEndingHTML();
String HtmlToDisplay = string.Format("{0}{1}{2}{3}{4}{5}{6}",
beginningHtml,
bodyBeginningHtml,
top10ItemsPurchasedHtml,
pricingExceptionsHtml,
forecastedSpendHtml,
deliveryPerformanceHtml,
endingHtml);
return new HttpResponseMessage()
{
Content = new StringContent(
HtmlToDisplay,
Encoding.UTF8,
"text/html"
)
};
}
它是从就绪函数中调用的(当单击按钮时),如下所示:
$(document).ready(function () {
$("body").on("click", "#btnGetData",
function () {
var _begdate = $("#datepickerFrom").val();
var _enddate = $("#datepickerTo").val();
var _unit = $("#unitName").text();
$("#newhourglass").removeClass("hide");
$.ajax({
type: 'GET',
url:
'@Url.RouteUrl(routeName: "QuadrantData", routeValues
new { httpRoute = true, unit = "un", begdate = "bd", enddate = "ed" })'
.replace("un", encodeURIComponent(_unit))
.replace("bd", encodeURIComponent(_begdate))
.replace("ed", encodeURIComponent(_enddate)),
contentType: 'text/plain',
cache: false,
xhrFields: {
withCredentials: false
},
success: function (returneddata) {
$("body").html(returneddata);
$("#newhourglass").addClass("hide");
},
error: function () {
console.log('error in ajax call to QuadrantData');
$("#newhourglass").addClass("hide");
}
});
});
. . .
名为“HtmlToDisplay”(Ajax 调用中的“returneddata”)的字符串开头如下:
<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>eServices Reporting - Customer Dashboard</title><link rel=\"stylesheet\" href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css\"><script src= . . .
如您所见,它不是以虚假/多余的“body”标签开头,但是当我在 Chrome 开发工具中通过 F12 查看页面源代码时,第一件事(“<!DOCTYPE html>
”上方和其余部分) 是“<body>
”
为什么是<body>
在那里?
在 Chrome 开发工具的控制台中,有一条错误消息“Uncaught SyntaxError: Unexpected token var”
当我双击它时,它会将我带到“<body>
”标签。
所以我不仅想知道为什么“<body>
”在那里,而且还想知道为什么 Chrome 开发工具显然认为它是一个名为“var”的标记
在尝试替换原始 html 之前,我仔细比较了“HtmlToDisplay”的内容和 html 页面源代码,没有发现明显的差异(只是字符串的转义(“\”)符号等)。
为什么 Chrome 会打一个 <body>
标记在我的 HTML 顶部,为什么在两次单击“Uncaught SyntaxError: Unexpected token var”控制台错误消息时它会带我到那里?
尽管它很奇怪,至少看起来很奇怪,但我不认为多余/虚假的 <body>
标签确实是问题所在,因为出于某种原因它也在未修改的页面上 - 在我点击按钮替换 html 之前,页面(查看页面源代码)开始:
<body>
<!DOCTYPE html>
<html>
<head>
这个多余/虚假的“<body>
”标签显然来自 _Layout.cshtml,它是:
<body>
@RenderBody()
<hr />
<footer>
<p> © @DateTime.Now.Year - PRO*ACT USA</p>
</footer>
</body>
当我同时删除(打开和关闭)时 <body>
标签,谜团解开了——它们不再出现在 html 中。
不过,我仍然有同样的基本问题;只是当单击 2 次时,控制台中的错误消息现在会转到“<!DOCTYPE html>
”上方的空行。
为什么 html 以空行开头,这是否存在潜在问题?
文档第 1 行的初始空行同时出现在查看页面源代码和 Chrome 开发工具中。
最佳答案
查看错误消息 Uncaught SyntaxError: Unexpected token var
我认为它与 HTML 无关,而是与嵌入的 JS 代码有关在你的 HTML 中。
在声明下一个 var
之前,您是否缺少分号/括号/语句结尾?我会建议您将完整的 returneddata
复制到您喜欢的编辑器并搜索所有 var
以查看 previous line.
关于c# - 为什么 Chrome 会在我的 HTML 顶部添加一个正文,然后给我一个看似虚假的 err 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862551/
我试图弄清楚接受 OpenID 登录的网站如何无法通过简单的主机文件更新来指向伪造的 OpenID 提供商。 假设我想侵入 Joe Smith 的帐户,在这个例子中,假设他的 OpenID 提供商是
#include #include #include #include #include #include #include #include #include #include #define P
根据此讨论 - "RESTful API - Correct behavior when spurious/not requested parameters are passed in the req
如果编译为 Cand C++ 源代码,这个简单的代码片段会使用 g++ 4.7.0 生成“函数调用中缺少标记”警告。我相信这是编译器的错误,因为最终的 NULL值(value)就在那里。 #inclu
我读到,有时 && 运算符用于“短路”JavaScript,使其相信返回值 0 是 0 而不是 NaN,因为 0 在 JavaScript 中是一个虚假数字。我一直在四处寻找,想弄清楚这一切意味着什么
我正在使用 Borland(又名“Embarcodegearland”)C++Builder 2007 编译器,它有一个小错误,系统头文件中的某些 static const 项可能导致虚假的 "xyz
我是一名优秀的程序员,十分优秀!