2011-10-25 167 views
2

我的問題是以下。 我嘗試解析通過AJAX的一些數據,將數據傳遞給我的控制器:字符串[]通過Ajax和ASP.Net(MVC)

AJAX

$.ajax({ 
      type: "GET", 
      url: "ParseOrganizaitonPath", 
      data: { 
       organizationPath: $('#organizationPath').val() 
      }, 
      success: 
        function (data) { 
         //data is from type string with value "System.string[]" 
         //but should be from type System.string[] 
         }); 
        } 
     }); 

控制器

public string[] ParseOrganizaitonPath(string organizationPath) 
{ 
    List<string> organizations = organizationPath.Split('/').ToList(); 

    return organizations.ToArray(); 
} 

我到達控制器的方法,並在其中一切都很好,但回傳的數據(ajax部分,成功方法)只是一個字符串(「System.string []」,data [0] S,data [1] y data [2] s ... )但不是t他想要的數據。 (例如,如果我通過輸入「測試/一個」我想結果data [0] test,data [1] one

希望你明白我的問題是什麼。

在此先感謝!

朱利安

回答

2

必須嘗試使用​​JavaScriptSerializer嗎?看看這個例子:

public string ParseOrganizaitonPath(string organizationPath) 
{ 
    List<string> organizations = organizationPath.Split('/').ToList(); 
    System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 
      new System.Web.Script.Serialization.JavaScriptSerializer(); 
    return oSerializer.Serialize(organizations); 
} 

反序列化的JavaScript可以使用解析函數的JSON字符串:

var array = JSON.parse(data); 
+0

由於這是一個數組轉換成字符串,這不是我要找的。抱歉。 – Julian

+0

看看我的編輯,它顯示瞭如何將字符串反序列化爲數組。 – MatthiasG

+0

很酷,這工作正常,但沒有另一種方法來做到這一點沒有序列化返回值? – Julian

1

我找到了一種方法,你不必序列化(上C#的網站),並對其進行解析(JavaScript的網站)

只需使用從Controller繼承的JSON方法,並返回一個JsonResult

public JsonResult ParseOrganizaitonPath(string organizationPath) 
{ 
    List<string> organizations = organizationPath.Split('/').ToList(); 

    return JSON(organizations); 
} 

在客戶端網站(JavaScript)上,您必須將JSON.stringfy(dataObject)用於要發送到控制器方法的數據。

$.ajax({ 
      type: "POST", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      url: "ParseOrganizaitonPath", 
      data: JSON.stringify(myDataObject), 
      success: 
        function (data) { 
         //use your data 
         }); 
        } 
     }); 

這就是它對我的工作原理。

祝你好運!

Julian