2012-01-07 2 views
1

을 .post :자바 스크립트 배열은 내가 다음과 같습니다 자바 스크립트 배열이 AJAX 호출

postarray['min_price'] = 120000; 
postarray['max_price'] = 150000; 

jQuery를 기능을 .post를 통해 내가 AJAX 호출이 전달하려고 해요을 .PHP 파일 있도록 지금까지 해봤

$_REQUEST['query']['min_price'] = 120000; 
$_REQUEST['query']['max_price'] = 150000; 

:이 형식으로 얻을 수

$.post("ajax_findproperties.php", {query: postarray}, 
     function(data){ 
      // processing function with JSON result 
     } 
    ,'json'); 

을하지만 난 운이 없었습니다. 나는 심지어 var postarray를 쿼리하여 변경하려고 시도했지만 괄호로 묶인 변수 블록 대신에 query.serialize()을 시도했지만 행운도 없었다.

Firebug에서 내 상태를 확인할 때 AJAX 호출에는 POST vars가 전혀 설정되지 않았습니다.

+0

그것은 아마 가능하지만, 왜 그냥 query_min_price, query_max_price? – sdfadfaasd

+0

모든 것이 배열 내에서 단일화된다면 PHP 쪽에서 더 쉬워지기 때문입니다. 원래 폼의 이름은 "query [min_price]"였습니다 ... 너무 많이 변경하지 않으려 고합니다. – jeffkee

+0

또한 홀수 메모 : 나는 postarray.length 경고 할 때 0을 반환합니다. 그러나 내가 (postarray x) 루프 및 경고 x 및 postarray [x] 할 때 변수 및 배열 키를 잘 올. 그게 뭐야? – jeffkee

답변

2

자바 스크립트 배열이 배열이 아닌, 그것은 개체입니다. 전에 정의 :

var postarray = {}; 
postarray['min_price'] = 120000; 
postarray['max_price'] = 150000; 

또는 교체 :

var postarray = { 
    min_price: 120000, 
    max_price: 150000 
}; 

이제 JSON.stringify 작동 :

alert(JSON.stringify(postarray)); 

또한이 example를 참조하십시오.

하지만이 객체가 JSON.stringify()없이 전송해야합니다

$.post("ajax_findproperties.php", {query: postarray}, ...); 
+0

지금까지 최선의 답변입니다! 나는 그것을 시도하고있다, 지금까지 그것은 긍정적 인 징후를 보여준다 .. 그것이 모두 정확하다는 것을 확인하기위한 단지 약간의 비틀기 ... – jeffkee

0

JSON.stringify();으로 변환을 시도한 다음 PHP 스크립트에서 json_decode(...);을 수행 했습니까?

+0

JSON.stringify (postarray)를 시도하고 [] 만 반환하고, 문자열이나 vars는 반환하지 않았습니다. – jeffkee

+1

배열이 아닌 적절한 객체로 변경해야합니다 :'query.min_price = 120000;'및'query.max_price = 150000;'. 오브젝트 포맷이 아닌 배열 포맷으로 유지하려고한다면 변수 이름에'{ 'query []': postarray}'를 추가하여 jQuery에 알려야합니다. 그것은 비 정수 인덱스를 적절히 처리 할 것이다. –

+0

그런 경우 어떻게 양식 데이터에서 query.min_price 부분을 생성합니까? 그들은 미리 설정되어 있지 않습니다. 그것들은 사용되는 입력 필드의 이름에 의해 결정되며 더 많거나 적게 동적으로 추가 될 수 있습니다. query.min_price, query.max_price, query.other_fieldname, query.more_fieldnames 등등. 필드 속성을 기반으로 어떻게 반복합니까? – jeffkee

0

이 솔루션을보십시오 : 당신의 query

$.post("ajax_findproperties.php", { 'query[]': postarray }, 
    function(data) { }, 
    'json'); 

소스에 []을 추가 http://api.jquery.com/jQuery.post/#example-2

+0

사실 나는 벌써 시도했지만 행운도 없었다. – jeffkee

관련 문제