2012-01-30 7 views
1

나는 다음과 같은

var storage = [], obj; 
    $('form input[type=hidden]').each(function(){ 
     obj = {}; 
     obj[this.name] = this.value; 
     obj["spot"] = this.className 
     storage.push(obj); 
    }); 

    storage = $.toJSON(storage); 
    console.log(storage); 

    $.post('storage/', storage, function(data) { 
     if(data == "true") { 
      //window.location.href = href; 
     }else{ 
      alert("An error has been encountered, Blah has been notified, please try again later"); 
     } 
    }); 

을 가지고 PHP에서 나는 간단한 <?php print_r($_POST); ?>을하고 Array()를 인쇄는 JSON 인코딩 된 결과를 게시 될 것 같지 않습니다.

그것은 내게 열매를 맺고 있으며 나는 무엇이 일어나고 있는지 전혀 모른다. 어떤 도움이 필요합니까?

ps. json encoder로 http://code.google.com/p/jquery-json/을 사용하고 있습니다.

+0

거기에있는'console.log()'에서 무엇을 얻으시겠습니까? – Treffynnon

답변

2

jQuery의 ajax 데이터 옵션에는 개체 또는 쿼리 문자열이 필요합니다. 통과하고있는 json 문자열은 예상치 못한 문자열입니다. 대신이 시도 :

$.post('storage/', {storage: storage}, function(data){...}); 

및 PHP에서

$_POST["storage"]

편집하여 값에 액세스 : 또한, data == "true" 당신의 PHP는 공백 탭 또는 반환으로 숨겨진 문자를 반환 단지에-경우 /true/i.test(data)을해야합니다.

+1

그는 $ json = json_decode (file_get_contents ("php : // input"))를 사용할 수도 있습니다. POST 변수를 사용하지 않고 게시 된 json을 변수로 변환합니다. – Rahly

+0

사실입니다. 거기에 단점이 있습니까? jquery는 post/get var 대신 요청 본문을 전송하는 것을 어떻게 알 수 있습니까? 나는 그것에 관해서 문서에서 무엇을 찾을 수 없기 때문에 나는 그것을 멀리하고있다. –

+0

이것은 완전한 요청 인 원시 요청 본문이 될 것이고, 간단한 언어로 된 간단한 서비스 (모든 언어/방언은 응용 프로그램에 json을 작성)를 제공하기 위해 언어 간 쉬운 방법을 원할 때 유용합니다. 이 경우에는 'Content-Type' 헤더를 설정하는 것이 좋습니다. – Wrikken

관련 문제