2012-02-10 2 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을 반환하고 구문 분석 : 당신은 당신을 위해 실제 자바 스크립트 Array 객체를 만들어야합니다 JSON을 구문 분석해야 할 수 있습니다? –

+1

서버 측 코드 (작업 방법)를 게시하십시오. JSON 직렬화 된 배열 대신'system.array []'를 포함하는 문자열을 반환한다고 생각합니다. –

+0

메신저 내 계획은 json이 사용하지 않는 경우 이것이 작동하지 않으면 – deepakgates

답변

12

같은 JSON 객체를 직렬화하기 위해 라이브러리를 사용할 수 있습니다 JAVA이야

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

경우

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

jQuery 코드.

예를 들어, 다음과 같은 컨트롤러 액션에 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 요청을 만들 수있는 자바 스크립트 :

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

저는 왜 (나는 누군가가 우리를 채울 지 확신합니다.) 그러나 그것은 저에게 과거에 맞는 것을주었습니다.

하나 더 편집 :

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

감사합니다 !! 효과가있다. – deepakgates

1

백엔드에서 어떤 점을 실행하고 있습니까?

기본적으로 json 또는 xml을 사용하여 배열을 serialize하려는 경우가 있습니다. test.php 페이지 게시물 및 JSON 형식으로 반환 된 내용을 가져옵니다은 PHP를 만약

, 여기 jQuery .post API

예로부터 예입니다.

PHP 코드 당신이 당신은 JSON을 반환 할 수 있습니다 Googles' gson

+0

메신저를 사용하여 ASP.NET MVC 3 – deepakgates

관련 문제