2009-10-07 6 views
1
$.fn.fieldValues = function(successful) 
{ 
    var values = {}; 
    this.each(function() 
    { 
     if(strstr(this.name, '[]', true)) 
     { 
      var tmp = this.name.replace(/\[\]/, ''); 
      if(typeof values[tmp] == 'undefined') values[tmp] = {}; 
      var x = 0; 
      while(typeof values[tmp][x] != 'undefined') x++; 
      values[tmp][x] = $(this).val(); 
     } 
     else values[this.name] = $(this).val(); 
    }); 
    return values; 
} 

문제는 PHP 측이 배열을 얻을 수있다?자바 스크립트/JQuery와 배열/객체 문제

답변

1

는 소리.

그러면 이것을 JSON 문자열로 바꾸고 PHP 프로세스로 전달해야합니다. PHP는 이름/값 객체의 배열로 다시 deserialize 할 수 있습니다. 그러나 원하는 데이터를 사용할 수 있습니다.

다음
// make ajax call to perform rounding 
$.ajax({ 
    url: "/Rounding.aspx/Round/12", 
    type: 'POST', 
    dataType: 'html', 
    data: $.toJSON(dataArray), <-- call to jQuery plug in 
    contentType: 'application/json; charset=utf-8', 
    success: doSubmitSuccess 
}); 

내가

1

json 개체로 인코딩 한 다음 php (json_decode)에서 디코딩하면 해결할 수 있습니까?

+0

예, 나는 그것이 것이라고 생각 데이터를 직렬화하는 데 사용하는 JSON 라이브러리에 link이지만, JQuery와 네이티브 hasn '

//build json object var dataArray = $.makeArray($("form").serializeArray()); 

다음 게시물로 통과 t는 json native를 가지고 있고, 사용 된 모든 플러그인은 짜증이났다. 누구든지이 플러그인이 잘 작동한다는 것을 알고 있는가? – dfilkovi

+0

PHP가 JSON 네이티브를 가지고 있지 않다는 뜻입니까? –

+0

아니,하지만 해결책을 찾았는데, 문제는 JQuery에서 toJson을 사용할 때 stdClass의 객체를 얻었으므로이 배열을 PHP 측의 배열로 변환해야하며 괜찮을 것입니다. – dfilkovi

0

jQuery.fn.serialize을 다시 발명 한 것처럼으로 보입니다. jQuery를 이미 이름 "[]"으로 입력을 처리

<form> 
    <input type="hidden" name="foo[]" value="1" /> 
    <input type="hidden" name="foo[]" value="2" /> 
    <input type="hidden" name="foo[]" value="3" /> 
</form> 

<script> 
alert(unescape($('form').serialize())) // "foo[]=1&foo[]=2&foo[]=3" 
</script> 

PHP가 배열 OOTB에 그 파싱한다. 당신이 직렬화처럼 작동하지만 이름/값 객체의 배열을 만들 것 대신 SerializeArray가 필요 같은

+0

예하지만 serialize 문자열을 반환하고 배열 사용자 지정 아약스 함수와 다른 처리 할 것이다 원인이 필요합니다. – dfilkovi

+0

@dfilkovi : 정의 "처리 할 다른"하십시오. –

+0

먼저 폼에서 모든 데이터를 가져온 다음, PHP 함수가 (업데이트, 삭제) 호출 한 다음 전체 배열을 아약스로 전달하는 것과 같이 필요한 배열을 다른 배열에 추가합니다. serialize를 사용하면 해당 문자열에 다른 모든 변수를 추가해야하지만 serialize()를 사용하지 않고 val()을 사용하지 않고 하나의 변수 만 전달하려고 할 때도 마찬가지입니다. 전달 된 변수 중 하나가 직렬화 된 문자열인지 확인한 다음 다른 변수로 문자열을 업데이트하는 경우 과도한 것처럼 보일 것입니다. – dfilkovi