2009-04-22 9 views
2

j'ai une forme simple sur ma page avec une zone de texte et le bouton qui appelle cette méthode javascript

onclick="Create();" 

et c'est la fonction qui est couru ...

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"); 
} 

L'action appelée insère le nom dans la base de données et renvoie une chaîne.

La méthode fonctionne, il ajoute le nom affiché à ma base de données, mais comment puis-je utiliser cette chaîne retourne ma méthode pour afficher la chaîne retournée dans ma zone de texte.

Edit:

ce qui est ma méthode suppose pour ressembler à quelque chose comme j'ai

[AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult Create(string name) 
    { 
     string hash = repo.addName(name); 
     return new JsonResult() 
     { 
      Data = new { data = hash } 
     }; 

    } 

quand j'ajouter des points d'arrêt et de le vérifier, il semble que cela fonctionne, il n'ajoute le nom. la fonction de rappel est utilisée parce que j'ai remplacé le

$("#longUrl").val(json.PropertyReturned); 

avec une alerte (json.PropertyReturned); pour voir si quelque chose se passe même et je reçois la boîte de texte, mais il dit "non défini"

Im vraiment nouveau à tout cela peut-être im juste faire la méthode et retourner mal. aussi intelisense n'affiche pas "json.PropertyReturned" comme une option quand il apparaît après avoir tapé "json".

+0

+1. Merci fatale. Cette question et les réponses subséquentes ont aidé sur quelques questions/problèmes différents que j'ai eu. Très appréciée! –

Répondre

5

Fournissez un rappel en tant que troisième argument de l'appel de post qui obtiendra la valeur renvoyée par la méthode et le placez dans votre zone de texte.

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

Si vous avez besoin pour gérer les erreurs aussi bien, vous voudrez peut-être regarder à l'aide .ajax $().

EDIT: Vous devriez probablement utiliser la méthode JSON du contrôleur au lieu de construire le résultat en utilisant le constructeur par défaut. C'est plus pratique.

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

@tvanfosson, merci pour votre réponse. J'ai toujours un léger problème et j'ai mis à jour mon message pour le refléter. Pourriez-vous jeter un coup d'oeil. – Fatal510

+0

@ Fatal510 - J'aurais dû signaler que le nom de la propriété que j'utilisais était fictif puisque je ne connaissais pas votre structure actuelle. J'ai mis à jour. Remarque: Je propose également une méthode alternative pour renvoyer le résultat JSON en utilisant la méthode JSON du contrôleur. – tvanfosson

+0

@tvanfosson, Merci pour les informations supplémentaires, il a vraiment aidé. – Fatal510

0

Je pense que le troisième paramètre est la fonction de rappel. Au lieu d'un null, passez un nom de fonction là.

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

Fournissez un rappel ou définissez l'async sur false.

Questions connexes