提交表单时应该出现$_POST,但没有?

时间:2019-04-30 作者:Monica

当我修改使用MYSQL读取到表单中的数据时,我希望将这些更改应用到数据库中。但即使成功提交表单$_POST 价值观没有改变,它们仍然是旧的价值观
我看到AJAX中的值发生了变化,我甚至尝试用AJAX中的值插入数据库,但这不起作用<我已经花了好几天时间在这上面了,有人能帮忙吗?如果我能if(isset($_POST[\'FirstName\'])) 那我就好了,但我似乎无法实现这一点。我会附上我的部分代码,有很多,但我会附上那些适用的。

// SNIPPETS FROM THE FORM:  This is contained in php_DOC.php
<form id="PhysicianForm" method="POST" enctype="multipart/form-data"
                autocomplete="off" action="<?php echo admin_url(\'admin-ajax.php\'); ?>" >      
 <input type="hidden" name="action" value="CreateProfile">

// This prints out the modified FirstName value correctly, this is the only place I can get the modified value.  This is contained in php_DOC.php
    jQuery(\'#SubmitInsHrs\').click( function () {
        var FirstName = jQuery(\'#FirstName\').val();
            alert(\'FirstName being updated...\', FirstName);
          console.log(FirstName);

        jQuery.ajax({
            url: \'admin-ajax.php\',
            type: "POST",
            data: {
                \'action\': \'post_language\',
                \'FirstNM\': FirstName,

            },
            success: function (data) {
                alert(data);
            }
        });

    });
这些在functions.php

add_action(\'wp_enqueue_scripts\',\'enqueue_jqery_form\');
add_action(\'wp_ajax_CreateProfile\',\'CreateProfile\');

function CreateProfile(){
  wp_send_json_success( $_POST );
}


function enqueue_jqery_form (){
  wp_enqueue_script(\'jquery-form\');
}
我也试过这样做,只是强制插入新值,但没有插入发生…。

function post_language(){

    global $wpdb;
    alert(\'post_language is called\');

    $FirstName = isset( $_POST[\'FirstName\'] ) ? $_POST[\'FirstName\'] : \'\';

    $table = \'Provider\';

    $wpdb->insert( $table, array(\'FirstNM\' => $FirstName));
}
add_action(\'wp_ajax_post_language\', \'post_language\');

1 个回复
SO网友:Qaisar Feroz

将此添加到functions.php

add_action(\'wp_ajax_post_language\',\'post_language\');
然后在代码中进行以下任一更改。

因为jquery代码正在发送FirstNM 至服务器(非FirstName).因此,在post_language() 函数,更改此行

$FirstName = isset( $_POST[\'FirstName\'] ) ? $_POST[\'FirstName\'] : \'\';

    $FirstName = isset( $_POST[\'FirstNM\'] ) ? $_POST[\'FirstNM\'] : \'\';
OR
更改\'FirstNM\': FirstName,\'FirstName\': FirstName, 在ajax调用中。

data: {
            \'action\': \'post_language\',
            \'FirstName\': FirstName,     // \'FirstNM\': FirstName,
        }
UPDATE:
同时从中删除此行post_language() 函数(如果尚未定义)alert() 在PHP中,它似乎是错误地将JS函数添加到PHP中,导致PHP错误。

    alert(\'post_language is called\');