2011-03-10 37 views
1

我從服務器返回此JSON:如何在json屬性內執行一個函數?

{ 
    "Id": 0, 
    "Name": ko.observable('New Product'), 
    "PurchasePrice": 0.0, 
    "DownPayment": 0.0, 
    "TotalPayment": 0.0, 
    "MortgageInsurance": 0.0, 
    "PurchaseOrRefinance": null, 
    "Client": null, 
    "MonthlyCosts": null, 
    "ClosingCosts": null, 
    "FirstLien": null, 
    "SecondLien": null 
} 

我找回它使用jQuery.getJson這樣的:

function addProduct(){ 
    $.getJSON('@Url.Action("GetNewProduct","Product")',function(data){ 
     viewModel.products.push(data); 
    }); 
    viewModel.productSaved(false); 
    viewModel.product(products[products.length - 1]); 

} 

但是,它看起來好像代碼永遠不會運行。只有當我在json中返回函數時纔會發生這種情況,如果我刪除了函數運行正常。有沒有辦法解決這個問題?

+3

函數不是[有效的JSON(http://json.org ) – sdleihssirhc 2011-03-10 03:08:28

+0

這個函數'ko.observable'在你的javascript中? – 2011-03-10 03:11:45

回答

2

解析數據失敗,因爲

{"Name":ko.observable('New Product') } 

實際上不是JSON。您只能通過JSON傳遞基本數據,如字符串/數字/對象。 請參閱http://www.json.org/

您可能會考慮調用jQuery.ajax(),並將dataType設置爲'script'。

否則,您需要在您的回調函數或服務器代碼中初始化您的變量,這甚至可能是一個更清晰的方法。

3

它應該是這樣的>

返回此

{"Id":0,"Name":'New Product',"PurchasePrice":0.0,"DownPayment":0.0,"TotalPayment":0.0,"MortgageInsurance":0.0,"PurchaseOrRefinance":null,"Client":null,"MonthlyCosts":null,"ClosingCosts":null,"FirstLien":null,"SecondLien":null} 

,使它像這樣>

function addProduct(){ 
     $.getJSON('@Url.Action("GetNewProduct","Product")',function(data){ 
      data.Name = ko.observable(data.Name); 
      viewModel.products.push(data); 
     }); 
     viewModel.productSaved(false); 
     viewModel.product(products[products.length - 1]); 

    } 
相關問題