我正在尝试使用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();
}
我查了一下firebug,数据被发送了,但是使用visual studio的调试器,我看到“titre”总是保持为空。
我该怎么办?
答案 0 :(得分:2)
我曾经遇到类似于asp.net的东西,但我从未真正试图了解发生了什么。为我修复的是以下内容:
在你的后端某处创建一个新类(任何地方,现在都无关紧要)
class TitreWrapper {
public string titre {get; set;}
}
然后在您的控制器中
[HttpPost]
public ActionResult CheckReturn(TitreWrapper titreWrap)
{
string titre = titreWrap.titre;
}
这应该根据我以前的经验
最佳答案是错误的(但在其他情况下我认为是正确的)
对于这个问题,以下工作:
xmlhttp.open("POST", "/CheckReturn?titre=" + titre, true);
然后只是
xmlhttp.send();
OR
xmlhttp.open("POST", "CheckReturn", true);
然后
xmlhttp.send("titre=" + titre);