2009-08-14 4 views
1

Gibt es eine Möglichkeit, das improvisierte Dialogfeld während eines Beitrags angezeigt zu halten?
Hier ist die Javascript-CodeHalten Sie improvisierte "up" während der Durchführung einer Jquery Ajax/MVC Post

$('#linkPostTest').click(function() {   
     openprompt(); 
}); 

function openprompt() { 
    var temp = { 
     state0: { 
      html: 'Are you sure you want to post?<br />', 
      buttons: { Yes: true, No: false }, 
      focus: 1, 
      submit: function(v, m, f) { 
       if (v) { 
        var form = $('frmPostTest'); 
        $.ajax(
          { 
           type: 'POST', 
           url: '/Path/TestPost', 
           data: form.serialize(), 
           success: function(data) { 
              // I realize I could check "data" 
              // for true...just have not 
              // implemented that yet.... 
            $.prompt.goToState('state1'); 
            //$.prompt('Test was successful!'); 
           }, 
           error: function() { 
            $.prompt.goToState('state2'); 
            //$.prompt('Test was not successful.'); 
           } 
          } 
         ); 

        return true; 
       } 
       else { 
        //$.prompt.goToState('state1'); //go forward 
        return false; 
       } 
      } 
     }, 
     state1: { 
      html: 'Test was successful!', 
      buttons: { Close: 0 }, 
      focus: 0, 
      submit: function(v, m, f) { 
       if (v === 0) { 
        $.prompt.close(); 
       } 
      } 
     }, 
     state2: { 
      html: 'Test was not successful.<br />', 
      buttons: { Close: 0 }, 
      submit: function(v, m, f) { 
       if (v === 0) { 
        $.prompt.close(); 
       } 
      } 
     } 
    }; 
    $.prompt(temp); 
} 

Der Controller tut dies

[AcceptVerbs(HttpVerbs.Post)] 
    public bool TestPost() 
    {    
     // runs some code that saves some data... 
     // this works fine 
     bool updated = functionThatSavesCode(); 
     return updated; 
    } 

Nachdem ich auf Ja, wenn die 'Sind Sie sicher, dass Sie stellen?' improvisierter Dialog wird angezeigt ... er verschwindet ... Wie kann ich ihn anzeigen lassen?

Antwort

1

OK, es hat funktioniert ... Ich bin wirklich beeindruckt von dem improvisierten Plug-in und jQuery! Zwei der Dinge, die ich anders tat dies, um Arbeit zu bekommen war, die beiden

return false; 

Aussagen unter dem Zustand 0 Block und ...

, um den die Ajax-Aufruf zu

async: false, 
hinzufügen

Hier ist das neue javascript:

$('#linkTestPost').click(function() { 
    TestPost(); 
}); 

function TestPost() { 
    var temp = { 
     state0: { 
      html: 'Are you sure you want to post?<br />', 
      buttons: { Yes: true, No: false }, 
      focus: 1, 
      submit: function(v, m, f) { 
       if (v) { 
        if (PostView() === true) { 
         $.prompt.goToState('state1'); 
         // the line below was missing from my original attempt 
         return false; 
        } 
        else { 
         $.prompt.goToState('state2'); 
         // the line below was missing from my original attempt 
         return false; 
        } 
       } 
       else {       
        return false; 
       } 
      } 
     }, 
     state1: { 
      html: 'Test Post was successful!', 
      buttons: { Close: 0 }, 
      focus: 0, 
      submit: function(v, m, f) { 
       if (v === 0) { 
        $.prompt.close(); 
       } 
      } 
     }, 
     state2: { 
      html: 'Test Post was not successful', 
      buttons: { Close: 0 }, 
      submit: function(v, m, f) { 
       if (v === 0) { 
        $.prompt.close(); 
       } 
      } 
     } 
    }; 
    $.prompt(temp); 
} 

function PostView() { 
    var form = $('frmTestPost'); 
    var postSuccess = new Boolean();   
    $.ajax(
    { 
     type: 'POST', 
     url: '/Path/TestPost', 
     data: form.serialize(), 
     // the line below was missing from my original attempt 
     async: false,    
     success: function(data) { 
      postSuccess = true; 
     }, 
     error: function() { 
      postSuccess = false; 
     } 
    });   
    return postSuccess; 
}