2009-04-22 2 views
2

я иметь простую форму на моей странице с текстовым полем и кнопками, которая называет этой 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»

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

+0

+1. Спасибо Fatal. Этот вопрос и последующие ответы помогли по нескольким различным вопросам/вопросам, которые у меня были. Очень признателен! –

ответ

5

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

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

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

EDIT: Вероятно, вы должны использовать метод Json контроллера, а не конструировать результат, используя конструктор по умолчанию. Это более удобно.

return Json(new { data = hash }); 
+0

@tvanfosson, спасибо за ваш ответ. У меня все еще есть небольшая проблема, и я обновил свой пост, чтобы отразить это. Не могли бы вы взглянуть. – Fatal510

+0

@ Fatal510 - Я должен был указать, что имя свойства, которое я использовал, было фиктивным, так как я не знал вашей фактической структуры. Я обновил. Примечание. Я также даю альтернативный способ вернуть результат json с помощью Json-метода контроллера. – tvanfosson

+0

@tvanfosson, Спасибо за дополнительную информацию, которую это действительно помогло. – Fatal510

0

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

0
$.post("/Home/Create", data, function(data) { 
    $("#textboxid").val(data.PropertyName);}, "json") 
0

Предоставить обратный вызов или установить асинхронное значение в false.

Смежные вопросы