2012-02-10 23 views
5

MVC関数からjQuery AJAX呼び出しで文字列の配列を返したいとします。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を返して、それを解析しないのはなぜ? –

+1

あなたのサーバーサイドコード(あなたの行動方法)を掲示してください。私はJSON直列化配列ではなく、 'system.array []'を含む文字列を返すと思います。 –

+0

imは私の計画であるjsonを使用していません。これはうまくいかない場合 – deepakgates

答えて

12

のようなJSONオブジェクトをシリアル化するためのライブラリを使用することができますJavaの場合。

たとえば、次のようなコントローラのアクションに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 
} 

、コントローラに(jQueryのAjaxの機能を使用して)Ajaxリクエストを作ることができ、あなたのjavascript:

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

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

EDIT:配列やリストを返すときは、Ajax呼び出しにtraditional:trueオプションを追加する必要があります。

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%確信しているわけではありませんが(私は誰かが私たちを記入すると確信しています)、それは私に過去のものを与えてくれました。

つ以上EDIT:あなたはあなたのため、実際のJavaScriptのArrayオブジェクトを作成する必要がありますJSONを解析する必要があります。

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

ありがとうございました!出来た – deepakgates

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"); 

それはあなたがあなたがJSONを返すことができGoogles' gson

+0

私はASP.NET MVC 3を使用しています – deepakgates

関連する問題