我的页面上有一个简单的表单,其中包含一个调用此javascript方法的文本框和按钮
onclick="Create();"
这是运行的函数......
function Create() {
var txt = document.getElementById("longTxt").value;
if (txt == "Insert Name") {
alert("You must provide a name");
return;
}
var data = { Name: txt };
$.post("/Home/Create", data, null, "json");
}
调用的操作将名称插入数据库并返回一个字符串。
该方法可以将发布的名称添加到我的数据库,但是我如何使用该字符串,我的方法返回以在我的文本框中显示返回的字符串。
编辑:
我的方法是什么,假设我看起来像
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Create(string name)
{
string hash = repo.addName(name);
return new JsonResult()
{
Data = new { data = hash }
};
}
当我添加断点并检查它看起来它是否正常工作它确实添加了名称。使用回调函数是因为我替换了
$("#longUrl").val(json.PropertyReturned);
带警报(json.PropertyReturned);看看是否有任何事情发生,我得到文本框,但它说“未定义”
我对所有这些都很新,也许我只是在做方法并返回错误。同时,在输入“json”后弹出的时候,intelisense不会显示“json.PropertyReturned”作为选项。
答案 0 :(得分:5)
提供回调作为post调用的第三个参数,它将获取方法返回的值并将其放入文本框中。
$.post("/Home/Create", data, function(json,textStatus) {
$("#longTxt").val( json.data );
},"json");
如果您还需要处理错误,可能需要查看使用$ .ajax()。
编辑:您应该使用控制器的Json方法,而不是使用默认构造函数构造结果。它更方便。
return Json( new { data = hash } );
答案 1 :(得分:0)
我认为第三个参数是回调函数。而不是null,在那里传递函数名称。
答案 2 :(得分:0)
$.post("/Home/Create", data, function(data) {
$("#textboxid").val(data.PropertyName);}, "json")
答案 3 :(得分:0)
提供回调,或将async设置为false。