【发布时间】:2016-02-03 14:37:08
【问题描述】:
我正在尝试使用 POST 将数据从视图发送到控制器,但我似乎无法正常工作。
这是我的代码(javascript 函数):
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
};
var titre = str;
xmlhttp.open("POST", "CheckReturn", true);
//xmlhttp.send(titre);
xmlhttp.send({"titre":titre});
}
}
触发它的html:
<div id="check-name" class="form-row">
<input id="name" type="text" name="name" placeholder="Titre de l'événement" onkeyup="showHint(this.value)">
<span id="txtHint"></span>
</div>
最后,控制器应该得到它:
[HttpPost]
public ActionResult CheckReturn(string titre)
{
var contexte = new intranetEntities();
var ajax = contexte.evenementiel.SqlQuery("Somequery" + titre);
ViewBag.ajax = ajax;
return PartialView();
}
我检查了 bit firebug,数据已发送,但使用 Visual Studio 的调试器,我看到“tire”始终保持为空。
我能做什么?
【问题讨论】:
-
对于您的 javascript 比较使用
===而不是==,另外,请问您为什么不使用 jQuery?我通常将 jQuery 用于 ajax,所以我不熟悉这样做的手动方式,因此我无能为力:( -
当我说“Visual Studio 的调试器,我看到“titre”总是保持为空。”时,我的意思是我在我的代码中设置了断点,以监视 titre 的值,它从来没有别的东西空
-
我没有使用 jquery,因为我看起来不太方便,我只是想要一个可行的解决方案。如果您认为使用 jQuery 会更好,请分享 :)
-
你试过
{titre:titre}而不是{"titre":titre}(基本上去掉titre周围的引号。实际上这可能行不通。看到你发回一个对象,它有一个字符串属性,但在控制器中你只需要字符串。尝试创建一个新类并为其赋予属性titre并在控制器参数中包含该新类 -
我正在使用MVC,你知道我应该把这个类放在哪里吗?
标签: javascript c# ajax asp.net-mvc