2013-12-19 25 views
0

在我看來我有一個叫做testalert的函數,而在我的控制器中我有一個叫做Index的動作,我用javascriptmodel可以解決我的問題,但是我發現如果我的動作不返回一個view(),例如:just返回Json(模型),javascriptmodel將無法正常工作。當我返回json時,如何調用js函數?爲什麼javascriptmodel只能設計爲在返回視圖中運行得很好 ?MVC:如何調用Javascript函數?

function testalert(para) { 
    alert(para); 
    } 

public ActionResult Index() 
    { 
    //work well and alert "abc" 
this.AddJavaScriptFunction("testalert", PageLoadEvent.Ready, null, "abc"); 
     return View(); 
    } 
public ActionResult GetData() 
    { 
    var restult="data"; 
// not work  
this.AddJavaScriptFunction("testalert", PageLoadEvent.Ready, null, "abc"); 
    return Json(restult); 
    } 

回答

1

我f.e AsyncHelper.Call完成(URL,則params)的返回結果的承諾,並在客戶方等待promise.done和我的東西。

較短的版本:

var AsyncAction = (function() { 
return { 
    //options: passed to $.ajax  
    Call: function (options, helperOptions) { 
     return $.ajax(options) 
     .done(function (result) { 
      helperOptions.onSucceed(result.model); 
     }); 
    } 
}; 

})();

+0

恐怕我無法適應這種情況。我的情況是有人調用可能不是來自視圖或可能來自另一個程序的動作,並且一旦動作被調用,js函數就會被調用。 – Lyly

+0

我不完全知道你是什麼意思@Lyly'另一個程序',但如果你調用一些操作,返回json數據應該被處理或任何這是最好的解決方案,因爲你正在返回json,而不是查看 - 在這種情況下通過this添加......添加JavaScript不會影響視圖(不會重新加載) – nilphilus

相關問題