1

これが私のjQueryコードです。JSON のデータを正しくフォーマットするのに問題があり、リクエストが失敗しています。正しく送信し、サーバーでデコードできるようにするにはどうすればよいですか?

$(".comment_button").click(function() {

    var chkarray = [];
    $('.webInput:checked').each(function(){
        chkarray.push($(this).val());
    });

    var dataString = "content="+ chkarray;

    if(test=='')
    {
        alert("Please check checked");
    }

    $.ajax({
        type: "POST",
        url: "chkoutput.php",
        dataType:'json',
        data: dataString,
        cache: false,
        success:
            function(html)
            {
                $("#test_area").after(html);
                document.getElementById('content').value='';
                $("#flash").hide();
            }
    });

これはサーバー側のコードです:

$chk_out = $_POST["content"];
echo json_encode($chk_array);
4

3 に答える 3

1

これを試して

$.ajax({
   type: "POST",
   url: "BACKEND.php",
   timeout: 8000,
   data: "var1=" + myVar,
   dataType: "json",
   error: function(){
     $("#DIVID").html("<div class='error'>Error!</div>");
   },  
   success: function(jsonObj){
     $("#DIVID").html(jsonObj.mydata);
   }
 });


PHP Array:
$data['mydata'] = $myData;

または以下の手順に従ってください

  1. var st = JSON.stringify(your_object); を使用して、javascript オブジェクト (json) を文字列化します。

  2. POST データを「文字列」として渡します (おそらく jQuery を使用: $.post('foo.php',{data:st},function(data){... });

  3. サーバー側の処理でデータをデコードします。 $data = json_decode($_POST['data']);

または単純なもの

var array = [1,2,3,4,5,6];
$.ajax({
  url: "mydomain.com/url",
  type: "POST",
  dataType: "json",
  data: {arrayName: array},
  complete: function() {
    //called when complete
  },
  success: function() {
    //called when successful
  },
  error: function() {
    //called when there is an error
  },
});
于 2012-09-30T10:21:06.840 に答える
1
var dataString=JSON.stringify(chkarray)   ;
  $.ajax({
        type: "POST",
        url: "chkoutput.php",
        dataType:'json',
        data: {"dataString":dataString},
        cache: false,
        success:
            function(html)
            {
                $("#test_area").after(html.data);
                document.getElementById('content').value='';
                $("#flash").hide();
            }

サーバー側で

$chk_out = json_decode(dataString);
$data=$chk_out->data;//$data is data which you added to array or we can say
 // $chk_out["data"]
于 2012-09-30T10:14:02.620 に答える
-1

配列を渡したい場合は、これを試してみてください。シンプルにするために $.post メソッドを使用します。コードを更新しました。

$(".comment_button").click(function() {

        var chkarray = [];
        $('.webInput:checked').each(function(){
        chkarray.push($(this).val());
        });
       // var dataString = "content="+ chkarray;      
    if(test=='')
    {
    alert("Please check checked");

    }
        $.post('chkoutput.php',{dataString:chkarray },function(data){

                     $("#test_area").after(html);
                     document.getElementById('content').value='';
                     $("#flash").hide();
                        });
}

あなたが言ったように、あなたはjqueryを知りません。まず、mozilla firebugなどのデバッグツールや便利なものでJavaScriptエラーをチェックし、投稿してください。

親愛なるコメンテーターのために編集

皆さんを混乱させて申し訳ありませんが、var dataString にコメントを追加しましたが、コメントがなくてもコードは機能します。$.post 引数の dataString は var dataString を表していないためです。$.post メソッドに渡されるのはまったく新しいオブジェクトのプロパティ名であり、他のすべてのものは $.post 関数によって管理されます。非難する前に誰も試したりチェックしたりしなかったことに本当に驚いています。

以下のコードをコピーして php (index.php という名前) ファイルに貼り付けてボタンをクリックし、何が起こるかを確認してから、どのように機能するかを尋ねてください。

<?php 
if(!empty($_POST))
{
  var_dump($_POST);exit;
}
?>
<!DOCTYPE html>
<html>
<body>

<h1>Please GET It</h1>


<script src="http://code.jquery.com/jquery-latest.min.js "></script>
<script>
function doSomething()
{   var test = ['I','am','an','array','wrong?', 'and posted as it was said on click']
    $.post('index.php',{test : test},function(data) {alert(data);})
}
</script>

<button onclick="doSomething()">Click me </button>

</body>

    </html>  
于 2012-09-30T10:21:19.133 に答える