0

$.ajax() で初めて json を使用しようとしましたが、$.ajax() 関数のデータ セクションの配列を介して処理し、mysqldb に投稿するために、チェックボックスの値とその他の必要なデータを php ファイルに取得しましたが、私のphpファイルで空の配列[]を取得します。ブラウザから JavaScript デバッグ ツールを使用しようとすると、reprot が表示されます

**Uncaught SyntaxError: Unexpected end of input jquery-1.9.0.min.js:1
st.extend.parseJSON jquery-1.9.0.min.js:1
(anonymous function) index.php?url=account/registration/:297
st.event.dispatch jquery-1.9.0.min.js:2
y.handle** 

私が作成した配列は、コンソールログで次のようになります

 [checkbox1: "COM 101", semester: "1st Semester", mid: "7", checkbox2: "COM 112", checkbox3: "STA 111"…]

checkbox1: "COM 101"
checkbox2: "COM 112"
checkbox3: "STA 111"
checkbox4: "STA 112"
checkbox5: "MTH 111"
length: 0
mid: "7"
semester: "1st Semester"

私のphp処理ファイルで、jsonデータでprint_rを実行しましたが、結果としてArray []を取得しました

これは私のJavaScriptコードブロックです「myDataArrayはグローバル変数です」

$('#mytable2').on('change',function(e){
            var rel = e.target.getAttribute('rel');
            console.log(e.target.value+ " "+ e.target.checked)
            if(rel === globals.payment_target && e.target.checked===true){
                myDataArray[e.target.getAttribute("name")]= e.target.value;
                myDataArray["semester"] = $("#semester").val()
                myDataArray["mid"] = $("#mid").val()

            }

            if(rel === globals.payment_target && e.target.checked ===false){
                delete myDataArray[e.target.getAttribute("name")]
                console.log(myDataArray)
            }

});
$('#mytable2').on('click',function(e){
            var rel = e.target.getAttribute('rel');
            console.log(e.target.value+ " "+ e.target.getAttribute('name'))
            if(rel === globals.payment_target && e.target.value =="Register"){
               console.log(myDataArray)
                var jsonstring = $.parseJSON(myDataArray);
                var myglob    =JSON.stringify(globals)
                console.log(myglob)
                $.ajax({url:'courseregistration.php',  type:'POST',data:{data:jsonstring},success: function(result){
                        $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>")
                        alert(result)

                    }
                })

            }

        });

そして、これはphpファイルがどのように見えるかです

$data = json_decode($_POST['data']);
print_r($data);

何が問題なのかわかりません。誰かが私がやっている方法のどこが悪いのか教えてもらえますか、またはより良い方法を提案してください

4

3 に答える 3

1

データ型プロパティ json を設定してみてください

 $.ajax({
    url:'courseregistration.php',
    type:'POST',data:{data:jsonstring},
    datatype:"json",
    success: function(result){
    $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>")
    alert(result)

    }
  });

また、php スクリプトでコンテンツ タイプを設定します。

header('Content-Type: application/json');
于 2013-08-20T06:00:56.197 に答える
0

私はこれを削除しました --- $.parseJSON(myDataArray) --- エラーは再び発生しませんでした。代わりに JSON.stringify(myDataArray) を使用しました。また、myDataArray を配列ではなくオブジェクトとして宣言したところ、問題なく動作し、Uncaught SyntaxError:問題が解決されました。

最初に、myDataArray を配列として宣言しました

 var myDataArray  = new array();

しかし、myDataArrayをObjectに変更したとき

 var myDataArray  = new Object;

私はそれを以下のように実行し、物事はうまくいきました

$('#mytable2').on('click',function(e){
            var rel = e.target.getAttribute('rel');
            console.log(e.target.value+ " "+ e.target.getAttribute('name'))
            if(rel === globals.payment_target && e.target.value =="Register"){
               console.log(myDataArray)
               console.log(globals)
                var jsonstring = JSON.stringify(myDataArray);
                console.log(myglob)
                $.ajax({url:'courseregistration.php',dataType:"json",  type:'POST',data:{data:jsonstring},success: function(result){
                        $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>")
                        alert(result)

                    }
                })

            }

        });     
于 2013-08-21T00:42:18.130 に答える
0

ページが機能していない理由は、重大なエラー (最初のリスト) です。フォームが希望どおりに送信されていないため、他の操作を行う前に、このエラーを解決する必要があります。

エラーの理由: ファイルが破損している可能性があります - jQuery の別のコピーをダウンロードして、再試行してください。

于 2013-08-20T05:48:26.763 に答える