jquery $ .post получить строку, возвращаемую из метода - PullRequest
2 голосов
/ 22 апреля 2009

У меня есть простая форма на моей странице с текстовым полем и кнопкой, которая вызывает этот метод 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");
}

Вызванное действие вставляет имя в базу данных и возвращает строку.

Метод работает, он добавляет опубликованное имя в мою базу данных, но как мне использовать эту строку, которую возвращает мой метод для отображения возвращенной строки в моем текстовом поле.

Edit:

какой мой метод должен выглядеть, как будто у меня что-то вроде

    [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); чтобы увидеть, происходит ли что-нибудь, и я получаю текстовое поле, но оно говорит "undefined"

Я действительно новичок во всем этом, может быть, я просто делаю метод и возвращаюсь неправильно. Кроме того, intelisense не показывает «json.PropertyReturned» в качестве опции, когда он появляется после ввода «json».

Ответы [ 4 ]

5 голосов
/ 22 апреля 2009

Укажите обратный вызов в качестве третьего аргумента вызова post, который получит значение, возвращенное методом, и поместит его в текстовое поле.

$.post("/Home/Create", data, function(json,textStatus) {
    $("#longTxt").val( json.data );
},"json");

Если вам также нужно обрабатывать ошибки, вы можете посмотреть на использование $ .ajax ().

РЕДАКТИРОВАТЬ : Вы, вероятно, должны использовать метод Json контроллера вместо конструирования результата с использованием конструктора по умолчанию. Это удобнее.

return Json( new { data = hash } );
0 голосов
/ 23 апреля 2009

Укажите обратный вызов или установите для асинхронного режима значение false.

0 голосов
/ 22 апреля 2009
$.post("/Home/Create", data, function(data) {
    $("#textboxid").val(data.PropertyName);}, "json")
0 голосов
/ 22 апреля 2009

Я думаю, что третий параметр - это функция обратного вызова. Вместо нуля передайте имя функции туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...