2012-05-03 13 views
3

どのようにしてデータ(連想配列)をPHPファイルに渡すことができますか?ajaxでjavascriptの連想配列をPHPファイルに渡す方法

function ajax(url,data,callback) 
     { 
      var xmlhttp; 
      if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
      else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange=function() 
      { 
       xmlhttp.onreadystatechange = function() { 
        if (xmlhttp.readyState === 4) { 
         callback(xmlhttp.responseText); 
        } 
       } 
      } 
      xmlhttp.open("POST",url,true); 
      xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
      xmlhttp.send(data); 
     } 
+3

[JSON](http://www.json.org/js.html) –

+1

json_encodeと[json_decode](http://www.php.net/manual/en/function.json-decode.php )あなたの友人です – Anigel

+1

jQueryを使用してください、このコードはstoneageのように見えます... –

答えて

0

あなたはこれを達成するためにPHPのJSON functionsを使用することができます。それは、javascriptが処理できる表記法に配列をエンコード/デコードします。

+0

それは唯一の方法ですか? – leo0110

+4

いいえ、それは唯一の正気な方法です。 –

+0

あなたはserialize()とunserialize()を使うことができますが、恐らくどこかでエラーが発生します。 JSONは、あなたが望むことをするために作成されました。 – romo

6

私はこれを読んで、あなたはjavascriptであり、javascriptオブジェクトを持っています(javascriptには連想配列、配列とオブジェクトだけがあります)。だから、あなたが持っているどんなデータでも、あなたはそれを文字列に変えてPOSTやGETを通してphpスクリプトに送る必要があります。あなたのページにJSON.stringifyがあることを確認するために、polyfillとしてJSON3を含めることをお勧めします。コードはこのようなものになります。

var data = { 
    someData: 'data', 
    moreData: [ 
     'blah', 
     'bleh' 
    ] 
}; 

var stringData = JSON.stringify(data); 

// using jquery ajax for brevity (http://api.jquery.com/jQuery.ajax/) 
$.ajax({ 
    type: "POST", 
    url: "your-php-script.php", 
    data: { data: stringData } 
}); 

今すぐあなたのPHPスクリプトは、その文字列を暗礁することができますし、JSON自体に戻ってそれを回す:

<?php 
    $dataString = $_POST['data']; 
    $data = json_decode($dataString); 

がうまくいけば、これはあなたが探していたものです。乾杯!