2012-02-10 25 views
5

我想通過jQuery AJAX調用從MVC函數返回一個字符串數組。返回從MVC到jQuery的字符串數組ASP.NET

我的客戶端代碼:

function get_categories() { 
    var url = "/Profile/GetCharacters"; 
    $.post(url, function (data) { 
    alert(data); 
}); 

但我無法讀取數組元素。在alert(data)中它總是表示system.array[]alert(data[0])它表示s(即system.array []中的第一個字符)而不是數組元素。

這裏被簡化的我的服務器端代碼版本..引起原來是大的方式太複雜了:)

public Array GetCharacters() 
    { 

     var ret = new string[10]; 
     ret[0]="abc"; 
     ret[1] = "def"; 
     ret[2] = "ghi"; 
     return (ret); 
    } 

但是這給「System.string []」來代替,而同樣的問題訪問單個值

+1

爲什麼不返回JSON和分析呢? – 2012-02-10 12:02:52

+1

請發佈您的服務器端代碼(您的操作方法)。我想你會返回一個包含'system.array []'的字符串,而不是一個JSON序列化數組。 – 2012-02-10 12:03:09

+0

即時消息不使用json這是我的計劃B如果這不起作用 – deepakgates 2012-02-10 12:33:42

回答

12

您可以返回JSON。

舉例來說,你可以做一個Ajax請求下列控制器動作:

public JsonResult GetMyData() 
{ 
    SomeClass s = new SomeClass(); 
    s.Property1 = "value"; 
    s.Property2 = "another value"; 

    return Json(s, JsonRequestBehavior.AllowGet); //you will need the AllowGet option to return data to a GET request 
} 

然後,你的JavaScript可以使一個Ajax請求(使用jQuery的Ajax功能)控制器:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
}; 

$.ajax({ 
    type: 'GET', 
    url: '/ControllerName/GetMyData/', 
    success: function (data) { onSuccess(data); } 
}); 

編輯:當返回一個數組或列表時,您需要將傳統:true選項添加到Ajax調用中,如下所示:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
}; 

$.ajax({ 
    type: 'GET', 
    url: '/ControllerName/GetMyData/', 
    success: function (data) { onSuccess(data); }, 
    traditional: true 
}); 

我不是100%確定爲什麼(我肯定有人會填補我們),但那已經讓我適應了過去。

還有一個編輯:您可能需要解析JSON,這應該爲你創建一個實際的JavaScript數組對象:

var onSuccess = function (data) { 
    //data will be your s object, in JSON format 
    var arr = JSON.parse(data); 
}; 
+0

謝謝!!有效 – deepakgates 2012-02-10 14:43:09

1

你在後端運行什麼?

基本上你可能想要序列化你的數組首先使用json或xml。

如果是PHP,這裏是jQuery .post API

例爲例:帖子給test.php的頁面,並獲得已JSON格式被返回的內容。

PHP代碼

<?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>

jQuery代碼

$.post("test.php", { "func": "getNameAndTime" }, 
function(data){ 
    console.log(data.name); // John 
    console.log(data.time); // 2pm 
}, "json"); 

如果它的Java,你可以使用庫序列化JSON對象,如Googles' gson

+0

即時通訊使用ASP.NET MVC 3 – deepakgates 2012-02-10 12:34:26