복붙노트

[JQUERY] 어떻게 JQuery와 - 직렬화 된 형식을 PHP는-를 unserialize합니까?

JQUERY

어떻게 JQuery와 - 직렬화 된 형식을 PHP는-를 unserialize합니까?

해결법


  1. 1.당신은 JQuery와 직렬화 방법에서 PHP의 때 unserialize 아무것도 할 필요가 없습니다. 당신이 데이터를 직렬화하는 경우는 GET 방법 아약스 요청 또는 포스트를 사용하는 경우, 그것은 쿼리 매개 변수로 PHP로 전송해야 당신이 POST 아약스 요청을 사용하는 경우 바르. 그래서 PHP에서, 당신은 요청 유형에 따라 $ _POST [ "varname에"] 또는 $ _GET [ "varname에"] 같은 값에 액세스합니다.

    당신은 JQuery와 직렬화 방법에서 PHP의 때 unserialize 아무것도 할 필요가 없습니다. 당신이 데이터를 직렬화하는 경우는 GET 방법 아약스 요청 또는 포스트를 사용하는 경우, 그것은 쿼리 매개 변수로 PHP로 전송해야 당신이 POST 아약스 요청을 사용하는 경우 바르. 그래서 PHP에서, 당신은 요청 유형에 따라 $ _POST [ "varname에"] 또는 $ _GET [ "varname에"] 같은 값에 액세스합니다.

    직렬화 방법은 양식 요소를 받아 문자열 형태를 넣습니다. "변수 varName = 브로 및 VAR2을 val2 ="


  2. 2.서버가 문자열을 받고 있음을 한 것으로이 같은 모양의 무언가 (어떤이의 jQuery 직렬화 ()를 사용하는 경우가해야) :

    서버가 문자열을 받고 있음을 한 것으로이 같은 모양의 무언가 (어떤이의 jQuery 직렬화 ()를 사용하는 경우가해야) :

    "param1=someVal&param2=someOtherVal"
    

    ...이 같은 모든 당신이 필요로 아마 :

    $params = array();
    parse_str($_GET, $params);
    

    $ PARAMS는 배열 당신이 기대하는 방법을 모델링해야한다. HTML의 배열이 작동합니다.

    자세한 내용은 다음을 참조하십시오 : http://www.php.net/manual/en/function.parse-str.php

    도움이되기를 바랍니다. 행운을 빕니다!


  3. 3.// jQuery를 포스트

    // jQuery를 포스트

    var arraydata = $('.selector').serialize();
    

    // jquery.post 연재 VAR - TO - PHP 배열 형식

    parse_str($_POST[arraydata], $searcharray);
    print_r($searcharray); // Only for print array
    

    // 당신은 그 어떤 것도 같은를 얻을 수

     Array (
     [A] => 1
     [B] => 2
     [C] => 3
     [D] => 4
     [E] => 5
     [F] => 6
     [G] => 7
     [H] => 8
     )
    

  4. 4.

    parse_str($_POST['whatever'], $searcharray);
    

  5. 5.HTML 페이지에서 :

    HTML 페이지에서 :

    <script>
    function insert_tag()
    {
        $.ajax({
            url: "aaa.php",
            type: "POST",
            data: {
                ssd: "yes",
                data: $("#form_insert").serialize()
            },
            dataType: "JSON",
            success: function (jsonStr) {
                $("#result1").html(jsonStr['back_message']);
            }
        });
    }
    </script>
    
    <form id="form_insert">
        <input type="text" name="f1" value="a"/>
        <input type="text" name="f2" value="b"/>
        <input type="text" name="f3" value="c"/>
        <input type="text" name="f4" value="d"/>
        <div onclick="insert_tag();"><b>OK</b></div>
        <div id="result1">...</div>
    </form>
    

    PHP 페이지 :

    <?php
    if(isset($_POST['data']))
    {
        parse_str($_POST['data'], $searcharray);
        $data = array(
            "back_message"   => $searcharray['f1']
        );
        echo json_encode($data);
    }
    ?>
    

    이 PHP 코드에 F1 필드를 반환합니다.


  6. 6.쉽게 사용할 수 있도록 왜, 연관 배열을 사용하지 않는

    쉽게 사용할 수 있도록 왜, 연관 배열을 사용하지 않는

    function unserializeForm($str) {
        $returndata = array();
        $strArray = explode("&", $str);
        $i = 0;
        foreach ($strArray as $item) {
            $array = explode("=", $item);
            $returndata[$array[0]] = $array[1];
        }
    
        return $returndata;
    }
    

    문안 인사


  7. 7.수정 머 타자 후세인 답변 :

    수정 머 타자 후세인 답변 :

    function unserializeForm($str) {
        $strArray = explode("&", $str);
        foreach($strArray as $item) {
            $array = explode("=", $item);
            $returndata[] = $array;
        }
        return $returndata;
    }
    

  8. 8.간단하게이 작업을 수행

    간단하게이 작업을 수행

    $get = explode('&', $_POST['seri']); // explode with and
    
    foreach ($get as $key => $value) {
        $need[substr($value, 0 , strpos($value, '='))] =  substr(
            $value, 
            strpos( $value, '=' ) + 1 
        );
    }
    
    // access your query param name=ddd&email=aaaaa&username=wwwww&password=wwww&password=eeee
    var_dump($need['name']);
    

  9. 9.난 당신이 사용하고있는 JQuery와의 버전 모르겠지만,이 JQuery와 1.3에서 나를 위해 작동합니다 :

    난 당신이 사용하고있는 JQuery와의 버전 모르겠지만,이 JQuery와 1.3에서 나를 위해 작동합니다 :

    $.ajax({
        type: 'POST', 
        url: your url,
        data: $('#'+form_id).serialize(), 
        success: function(data) {
            $('#debug').html(data);
      }
    });
    

    당신이 일반적으로 PHP에서하는 그런 다음 당신은 POST 배열 키에 액세스 할 수 있습니다. 그냥 인 print_r와 시도 ().

    나는 당신에게 내가 아는대로 쓸모없는 객체의 속성에있어 포장 직렬화 된 형식 값을 생각합니다.

    도움이 되었기를 바랍니다!


  10. 10.이 user1256561에 대한 회신입니다. 당신의 아이디어 주셔서 감사합니다 ..하지만 난 STEP3에서 언급 한 URL을 디코딩 물건 처리되지 않은.

    이 user1256561에 대한 회신입니다. 당신의 아이디어 주셔서 감사합니다 ..하지만 난 STEP3에서 언급 한 URL을 디코딩 물건 처리되지 않은.

    그래서 여기에 다른 사람이 그것을 필요로하는 경우, 직렬화 된 형식의 데이터를 디코딩 할 PHP 코드입니다. 그런데, 자신의 판단에이 코드를 사용합니다.

    function xyz($strfromAjaxPOST)
    {
        $array = "";
        $returndata = "";
        $strArray = explode("&", $strfromPOST);
        $i = 0;
        foreach ($strArray as $str)
        {
            $array = explode("=", $str);
            $returndata[$i] = $array[0];
            $i = $i + 1;
            $returndata[$i] = $array[1];
            $i = $i + 1;
        }
        print_r($returndata);
    }
    

    속성 1 = VALUE1 및 속성 2 = 값 2 및 attribute3 = VALUE3 등 다음 URL 게시물 데이터 입력은 같은 것

    위의 코드의 출력은 여전히 ​​배열에있을 것입니다 그리고 당신은 그것이 당신이 원하는 어떤 변수에 할당받을 수정할 수 그것을 당신이 더이 데이터를 사용하는 방법에 따라 달라집니다.

    Array
    (
        [0] => attribute1
        [1] => value1
        [2] => attribute2
        [3] => value2
        [4] => attribute3
        [5] => value3
    )
    

  11. 11.당신은 단지 형태로 값 속성 이름이 필요합니다. 예 :

    당신은 단지 형태로 값 속성 이름이 필요합니다. 예 :

    형태

    <form id="login_form">
        <input type="text" name="username" id="a"/>
        <input type="password" name="password" id="b"/>
        <button type="button" onclick="login()">Submit</button>
    </form>
    

    자바 스크립트

    $(document).ready(function(){});
    function login(){
      var obj = $('#login_form').serialize();
      $.post('index.php', obj, function(res){
        alert(res);
      })
    }
    

    PHP - index.php를

    <?php
    if(!empty($POST['username']) && !empty($POST['password'])){
      $user = $POST['username'];
      $pass = $POST['password'];
      $res = "Username : ".$user." || Password : ".$pass;
      return $res;
    }
    ?>
    

  12. 12.사용하다:

    사용하다:

    $( '#form' ).serializeArray();
    

    PHP는 배열을 얻을 망가를 unserialize 필요)


  13. 13.나는 당신이 그 값에서 양식 이름을 분리 할 필요가 있다고 생각,이 작업을 수행하는 한 가지 방법은 () 그래서 당신은 속성 = 값, 속성 2 = 값을 얻을 것이다 폭발하는 것입니다.

    나는 당신이 그 값에서 양식 이름을 분리 할 필요가 있다고 생각,이 작업을 수행하는 한 가지 방법은 () 그래서 당신은 속성 = 값, 속성 2 = 값을 얻을 것이다 폭발하는 것입니다.

    여기 내 요점은 당신이 PHP에서 배열로 직렬화 jQuery를 문자열로 변환하는 것입니다.

    여기에 좀 더 구체적으로하기 위해 수행해야하는 단계입니다.

    더 해명이 필요하면 알려주세요.


  14. 14.이 기능을 사용할 수 있습니다 :

    이 기능을 사용할 수 있습니다 :

    function post_unserialize( $key ){
      $post_data = array();
      $post_data = $_POST[ $key ];
      unset($_POST[ $key ]);
      parse_str($post_data, $post_data);
      $_POST = array_merge($_POST, $post_data);
    }
    

    사용 방법

    $_POST['serialized_data'] = 'var1=1&var2=2&var3=3';
    post_unserialize( 'serialized_data' );
    
  15. from https://stackoverflow.com/questions/1792603/how-do-i-php-unserialize-a-jquery-serialized-form by cc-by-sa and MIT license