jquery $ .post获取从方法返回的字符串

时间:2009-04-22 19:32:01

标签: jquery asp.net-mvc ajax

我的页面上有一个简单的表单,其中包含一个调用此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”作为选项。

4 个答案:

答案 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。