2013-02-08 34 views
0

在ASP.NET MVC 3中,我在AJAX調用中使用JSON。當我在我的開發機器上運行我的應用程序時,使用visual studio應用程序工作正常。 但是,如果我發佈相同的應用程序,並嘗試使用虛擬目錄訪問它,我收到錯誤JSON是未定義的JSON在asp.net中未定義mvc

代碼

function PopulateData() { 

      $.ajax({ url: '../Home/Populate/',//**Error Line** 
       type: 'POST', 
        data: JSON.stringify({ 
        'id':@ViewBag.Id      }), 

        dataType: 'json', 
        contentType: "application/json; charset=utf-8", 
       success: function (data) 
       {   
        //code 

       } // ajax callback 

      }); // ajax call 

     } 

請回復

+0

您是否添加了json ui文件或任何必要的文檔? – Sakthivel

+0

您使用哪些瀏覽器? – madhead

+0

您使用什麼瀏覽器查看您的網站? –

回答

2

我認爲問題是在這條線的物理路徑

url: '../Home/Populate/' 

將其更改爲相對路徑是這樣的:

url: '@Url.Action("Populate", "Home")' 

而且,你可以看到你的瀏覽器devTools的JSON網址。並且,檢查它,如果你的json url是正確的。

+1

+1 41秒比我快:P –

+0

嗨AliRızaAdıyahşi嘗試使用相對路徑url:'@ Url.Action(「Populate」,「Home」)', 但仍然得到相同的錯誤 – user1799982

+0

嗨AliRiza Adiyahsi。 –

2

這是因爲您已經給出了項目本地的控制器的url。

最好按照@Url.Action("actionname","controllername")這種方法。

  $.ajax({ 
      url: '@Url.Action("Populate","Home")', 
      type: 'POST', 
      data: JSON.stringify({id:@ViewBag.Id}), 
      dataType: 'json', 
      contentType: "application/json; charset=utf-8", 
      success: function (data) 
      {   
       //code 

      } // ajax callback 

     }); // ajax call 
+0

嗨Karthik,嘗試使用相對路徑URL:'@ Url.Action(「Populate」,「Home」)',但仍然得到相同的錯誤 – user1799982

+0

@ user1799982什麼是您使用的瀏覽器 –

+0

@ user1799982 [檢查此](http://stackoverflow.com/questions/2503175/json-on-ie6-ie7)如果您使用IE <8 –

1

JSON是未定義看起來更像是瀏覽器的錯誤。在IE7,FF3.0等舊版瀏覽器中沒有內置JSON。因此,看起來您正在使用不同的瀏覽器來查看您的網站。

function PopulateData() { 

      $.ajax({ url: '../Home/Populate/',//**Error Line** 
       type: 'POST', 
        data: {'id':@ViewBag.Id },  
        dataType: 'json', 
        contentType: "application/json; charset=utf-8", 
       success: function (data) 
       {   
        //code 

       } // ajax callback 

      }); // ajax call 

     } 

而且因爲它:如果刪除JSON.stringify(你爲什麼需要,在所有的,jQuery的接收數據作爲一個對象,並會盡到它正確地傳遞到服務器所需的一切不確定) 假設它會正常工作在其他的答案被告知在這裏,你應該更好地利用url: @Url.Action("Populate", "Home"),而不是相對URL喜歡你現在

+0

嗨FAngel,如果我刪除JSON.Stringify數據不是取得.. – user1799982

+0

哦。我明白了,你是以json的身份傳遞它的。你確定你不能使用默認的應用程序/ x-www-form-urlencoded嗎? –

+0

@ user1799982嘗試刪除'JSON.stringify'和'contentType:...'。可能它會正常工作,但這取決於服務器端。 –

0

因爲JSON是不是所有的瀏覽器內置下載https://github.com/douglascrockford/JSON-js,包括在您的網站上

順便說一句爲什麼你使用stringify作爲原始類型S'

你可以做

data: { id: @ViewBag.Id } 

然後在ASp.Net的mvc控制器側

public ActionResult Populate(int id) 

所以ASp.net會分析你的參數爲您服務。

+0

謝謝all..I引用鏈接http://www.sitepoint.com/javascript-json-serialization/ – user1799982