0

私はこれらのJSコードの組み合わせを試しました:

var aion_settings = [];

function aion_save_settings(){

    //Users on the Site Frontend
    $('.setting-site-users').each(function(){
        aion_settings[$(this).prop('id')]=$(this).is(':checked');
    });

    console.log(aion_settings);

    $.ajax({
        method:'post',
        url:'/save_settings',
        dataType:'json',
        data:{
            settings: function(){
                return aion_settings;
            },
            other_data: 'Other Data'
        },
        success:function(result){
            console.log(result);
        }
    });
}

と...

function aion_save_settings(){

    var aion_settings = [];

    //Users on the Site Frontend
    $('.setting-site-users').each(function(){
        aion_settings[$(this).prop('id')]=$(this).is(':checked');
    });

    console.log(aion_settings);

    $.ajax({
        method:'post',
        url:'/save_settings',
        dataType:'json',
        data:{
            settings: aion_settings,
            other_data: 'Other Data'
        },
        success:function(result){
            console.log(result);
        }
    });
}

..と

var aion_settings = [];

function aion_save_settings(){

    //Users on the Site Frontend
    $('.setting-site-users').each(function(){
        aion_settings[$(this).prop('id')]=$(this).is(':checked');
    });

    console.log(aion_settings);

    $.ajax({
        method:'post',
        url:'/save_settings',
        dataType:'json',
        data:{
            settings: aion_settings,
            other_data: 'Other Data'
        },
        success:function(result){
            console.log(result);
        }
    });
}

..そしてこれらのコンボ:

$.ajax({
    method:'post',
    url:'/save_settings',
    dataType:'json',
    data:aion_settings,
    success:function(result){
        console.log(result);
    }
});

このJQueryページには、次の例もあります。

var xmlDocument = [create xml document];
var xmlRequest = $.ajax({
  url: "page.php",
  processData: false,
  data: xmlDocument
});

xmlRequest.done(handleResponse);

受信側には、次のPHPコードがあります。

$app->post('/save_settings',function() use ($app){

    $aion_settings=$app->request()->post();

    var_dump($aion_settings);

    //Save the aion_settings
    if(aion_logged_in_user_super()){

        global $aion_db;
        if(is_array($aion_settings)) foreach($aion_settings as $setting_key => $setting){

            //Get the setting's ID
            $current_setting = array();
            $current_setting = $aion_db->queryFirstRow("SELECT id FROM settings WHERE setting_key=%s",$setting_key);

            if(!isset($current_setting['id'])) $current_setting['id']=NULL;

            $aion_db->insertUpdate('settings',array(
                'id'=>$current_setting['id'],
                'setting_key'=>$setting_key,
                'value'=>serialize($setting)
            ));
        }
    }
});

は、リクエストが送信されるaion_settings直前に正しくセットアップされます。$.ajaxでも、引っかかるのにオブジェクトsettingsがPHP側でother_data引っかからない?以下の最後の行は、 を介して準備ができてconsole.logいるが、 を介して設定されていないオブジェクトを示しています$.ajax。私は困惑しています、助けはありますか?

var が送信される前の PHP および JS 側を示す Chrome DEV ツール

コードのスクリーンショット

4

2 に答える 2

0

$.ajax関数のdataパラメーターは、次の形式にする必要があります。

data: {
    'settings': aion_settings,
    'other_data': 'Other Data'
},
于 2013-07-30T21:34:01.887 に答える
0

これは私がそれを修正した方法です:

JS 側:

function aion_save_settings(){

    var aion_settings = new Object();   

    //Users on the Site Frontend
    $('.setting-site-users').each(function(){
        aion_settings[$(this).prop('id')]=$(this).is(':checked');
    });

    console.log(aion_settings);

    $.ajax({
        method:'post',
        url:'/save_settings',
        dataType:'json',
        data:aion_settings,
        success:function(result){
            console.log(result);
        }
    });
}

PHP 側:

$app->post('/save_settings',function() use ($app){

    $aion_settings=$app->request()->post(); 

    var_dump($aion_settings);

    //Save the aion_settings
    if(aion_logged_in_user_super()){

        global $aion_db;
        if(is_array($aion_settings)) foreach($aion_settings as $setting_key => $setting){

            //Get the setting's ID
            $current_setting = array();
            $current_setting = $aion_db->queryFirstRow("SELECT id FROM settings WHERE setting_key=%s",$setting_key);

            if(!isset($current_setting['id'])) $current_setting['id']=NULL;

            $aion_db->insertUpdate('settings',array(
                'id'=>$current_setting['id'],
                'setting_key'=>$setting_key,
                'value'=>serialize($setting)
            ));
        }
    }
});

上記の私の質問と比較してください。

ここに画像の説明を入力

ここに画像の説明を入力

于 2013-08-15T18:16:16.693 に答える