2013-08-13 1 views
2

와 PHP 배열 압축을 풀 수 없습니다 : 아래의 코드에서 볼 수 있듯이, 나는 배열에서 각각의 데이터를 얻기 위해 노력하고 $cv1 = array('a','b');

다음을 위임을 두 개의 별도 기능으로

그러나 데이터 PHP 콜백 함수에서 반환은 대신 'A'의 '배열', 'B'; 가와 [0] 얻는다 'A'결과를 초래할 [1] 'R'도움 등

감사를 얻을!

JS :

$('a').on('click',function(){ 
    var cv = $(this).data('cv'); 
    var url= '_php/myphp.php'; 
    $.post(url,{contentVar:cv},function(data) { 
    result=data; 
    return result; 
    }).done(function() { 
    alert(result[0]); 
    $('#myDiv').html(result[1]); 
    }); 
}); 

PHP : 이런 식으로 뭔가를 할 수

$cv1 = array("a","b"); 

$contentVar = $_POST['contentVar']; 

if($contentVar == "cv1") 
{ 
    echo json_encode($cv1); 
} 

답변

3

는 PHP에서 일반적입니다 대신 실제 배열의 "Array"를 얻을 수에 대한 실수로 문자열에 캐스트 될 때 그것은 당신이 여기에서하고있는 것이 아닙니다. 우리는 테스트 할 수 있습니다

> $cv1 = array("a","b"); 
array(2) { 
    [0] => 
    string(1) "a" 
    [1] => 
    string(1) "b" 
} 
> json_encode($cv1); 
string(9) "["a","b"]" 

$cv1가 제대로 인코딩됩니다.

당신은 다른 곳에서 문자열처럼 치료를해야합니다

또한
> (string)array("a","b") 
! Array to string conversion 
string(5) "Array" 

, 왜 $.post 두 성공 콜백을해야합니까? 세 번째 인수는 성공 콜백이며 .done과 동일하게 작동합니다. 둘 중 하나만 사용하십시오 (저는 done을 권장합니다).

마지막 인수 (dataType)로 json을 전달하여 jQuery가 예상 할 내용을 알고 올바르게 결과를 디코딩하도록 할 수도 있습니다.

+1

감사! 'json' 인수를 전달하면 작업이 수행됩니다. – BryanK

0

시도가 :

$.post(url,{contentVar:cv} 
    function(response) 
    { 
     alert(response[0]); 
    },'json' 
); 
+0

당신은 당신이 사용하는 데이터 "이 경우 JSON에서"유형 표시해야합니다. – fagace

0

당신은 자바 스크립트 객체/배열로 JSON 문자열 형식을 변환해야합니다.

var result = $ .parseJSON (data);

자세한 내용은 jQuery ajax request with json response, how to?을 참조하십시오.

하지만 'Array'를 반환하는 경우 PHP가 배열을 json으로 변환하지 않는다는 이상한 점이 있습니다. ($contentVar == "cv1")이 false를 반환하면 어떻게됩니까? 자바 스크립트 배열을 반환하는 경우 문자열로 변환해야합니다 (그리고 JSON 형식은 이에 적합합니다).