【发布时间】:2012-10-16 17:32:05
【问题描述】:
我正在尝试发布文本框的值,并在“你说...”部分的页面上发布相同的值。
我的 TypeScript/JavaScript 是:
declare var document;
declare var xmlhttp;
window.onload = () => {
start();
};
function sayHello(msg: any) {
// Post to server.
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
// All right - data is stored in xhr.responseText
alert("done" + " " + xmlhttp.responseText);
}
else {
// Server responded with a status code.
alert("error");
}
}
}
xmlhttp.open("POST", "Default.cshtml");
xmlhttp.send("someValue=" + msg);
return msg;
}
function start() {
// Add event Listeners for user interaction
var element = document.getElementById("link");
element.addEventListener("click", function () {
var tb = (<HTMLInputElement>document.getElementById("tbox"));
var element = document.getElementById("response")
.innerText = sayHello(tb.value);
}, false);
// Setup XMLHttpRequests (AJAX)
if (XMLHttpRequest) {
// Somewhat cross-browser
xmlhttp = new XMLHttpRequest();
}
else {
// Legacy IE
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
而HTML是(这个页面是Default.cshtml):
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Home Page";
var msg = Request["someValue"];
}
<h1>TypeScript HTML App</h1>
<div id="content">
<a href="javascript:;" id="link">Say Hello</a>:
<br />
<input type="text" value="dfgdfgdfg" id="tbox" />
<br />
<p id="response">awaiting a response.</p>
<br />
<p>You said:<br />
@msg</p>
</div>
并且我已经正确地包含了所有参考:
<script src="~/App.js"></script>
我得到的响应码是 200。
我在这里做错了吗?我已经遵循了许多教程、文档等,但我只是看不出我做错了什么。看起来几乎一模一样。
【问题讨论】:
-
您遇到了哪些错误/意外行为?
-
究竟是什么问题,当您的 ajax 请求触发时,您得到的是 404 还是 500?
-
到底出了什么问题?你知道浏览器是否在打电话吗? (查看网络上的 firebug 或 chrome 以查看是否正在实际进行呼叫)
-
完全没有错误,@JacobT.Nielsen - 它只是不发布数据。我正在尝试使用 msg 变量将“tbox”的值发布到服务器后输出,但没有输出任何内容。而且我不知道如何检查是否真的发布了 ajax,所以我假设它只是没有发布。但是......当我点击链接发布它时,我会收到一条提示“完成”的警报。
-
304 表示您的结果已被缓存。但是您是否了解,当您发出 ajax 请求时,您从 xmlhttp.responseText 获得的只是文本。请求它的页面现在不做任何事情。抱歉,您的申请流程对我来说没有多大意义。我已经测试了您的 ajax 调用、C# 代码和 HTML/Razor。这一切都很好。但是你仍然没有对它做任何事情。所以我不明白你的应用程序应该如何表现?
标签: c# javascript asp.net razor typescript