2009-08-14 26 views
1

有沒有辦法保持在帖子中顯示即興對話框?
這裏的javascript代碼在執行jQuery Ajax/MVC後保持即興「向上」

$('#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); 
} 

控制器做到這一點

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

後,我點擊是當「您確定要發佈?」即興對話顯示...它消失...我如何使它保持顯示?

回答

1

好吧,它的工作......即時插件和jQuery讓我印象深刻!的事情,我做了不同的得到這個工作 二是增加兩個

return false; 

報表state0塊下,並...

設置的Ajax調用

async: false, 

這是新的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; 
}