首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得使用$.ajax({data})发送到PHP的变量

无法获得使用$.ajax({data})发送到PHP的变量
EN

Stack Overflow用户
提问于 2013-07-30 17:54:50
回答 2查看 890关注 0票数 0

我已经尝试过这些JS代码组合:

代码语言:javascript
复制
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);
        }
    });
}

还有..。

代码语言:javascript
复制
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);
        }
    });
}

..and

代码语言:javascript
复制
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);
        }
    });
}

..and这些组合体与:

代码语言:javascript
复制
$.ajax({
    method:'post',
    url:'/save_settings',
    dataType:'json',
    data:aion_settings,
    success:function(result){
        console.log(result);
    }
});

在这个JQuery页面上,它甚至有下面的示例:

代码语言:javascript
复制
var xmlDocument = [create xml document];
var xmlRequest = $.ajax({
  url: "page.php",
  processData: false,
  data: xmlDocument
});

xmlRequest.done(handleResponse);

在接收端,我有以下PHP代码:

代码语言:javascript
复制
$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请求之前正确设置的。但是,在PHP端没有捕获对象settings,尽管other_data被捕获了吗?下面的最后一行显示了通过console.log准备好的对象,但没有通过$.ajax设置。我很困惑,有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-30 21:34:01

您的data函数的$.ajax参数应该具有以下格式:

代码语言:javascript
复制
data: {
    'settings': aion_settings,
    'other_data': 'Other Data'
},
票数 0
EN

Stack Overflow用户

发布于 2013-08-15 18:16:16

我就是这样修好的:

JS侧:

代码语言:javascript
复制
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:

代码语言:javascript
复制
$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)
            ));
        }
    }
});

请与我上面的问题作比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17954024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档