我有一个用户输入数据的表单和一个显示数据库中所有行的表。现在,当用户单击其中一行旁边的“编辑”链接时,我想将 ID 发布到 PHP 文件并将该行中的数据加载到表单中。
这就是我发布 ID 的方式(并且有效)
jQuery('a.edit').on('mousedown', function(){
var id = jQuery(this).attr('data-title');
jQuery.ajax({
url: document.location,
data: {id: id}
});
})
这就是我尝试接收发布的 ID 的方式(不起作用)
if( isset( $_GET['id'] ) ){
$id = $_GET['id'];
load_data($id);
}
我想我需要刷新页面?我怎样才能做到这一点?我也可以刷新表格吗?
编辑:我仍然认为这是一个重新加载/刷新问题。该值正在发布,但我的 PHP 无法识别,因为它没有重新加载。我见过有人用 jQuery 做这个而不是重新加载整个页面,但我没有重新创建这个。也许还值得一提的是,这些文件是 Wordpress 插件的一部分。
所以这是整个代码(我的插件叫做“spielerportraits”)
spielerportraits-admin.php
<?php
function print_data(){
global $wpdb;
$datatable = $wpdb->get_results(
'SELECT * FROM ' . $wpdb->prefix . 'spielerportraits' );
?>
<table id="spieler-output">
<tr>
<td>Name</td>
<td>Geb.datum</td>
</tr>
<?php foreach( $datatable as $data ) { ?>
<tr>
<td><?php echo $data->name; ?></td>
<td><?php echo $data->gebdatum; ?></td>
<td><a href="" class="edit" data-title="<?php echo $data->id;?>">bearbeiten</a></td> // The edit-link for jQuery
</tr>
<?php }
?>
</table>
<?php
}
if(isset($_GET['id'])){
global $wpdb;
$loaddata = $wpdb->get_row(
'SELECT * FROM '.$wpdb->prefix.'spielerportraits WHERE id = '.$_GET['id'] );
}
?>
<form enctype="multipart/form-data" name="spieler-form" action="" method="post">
<table id="spieler-input">
<tr>
<td>Name: </td>
<td><input type="text" name="name" value="<?php if( isset($loaddata) ){echo $loaddata->name;}?>" size="40"></td>
</tr>
<tr>
<td>Geburtsdatum: </td>
<td><input type="text" name="gebdatum" value="<?php if( isset($loaddata) ){echo $loaddata->gebdatum;}?>" size="40"></td>
</tr>
<tr>
<td class="submit">
<input type="submit" name="submit" value="Hinzufügen" />
</td>
</tr>
</table>
</form>
<?php
print_data();
?>
JS
jQuery('a.edit').on('mousedown', function(){
var id = jQuery(this).attr('data-title');
jQuery.ajax({
url: document.location,
data: {id: id},
success: function(data){
alert(data['id']); // This does show, but gives me 'undefined'
}
});
});
这就是插件在 Wordpress (spielerportraits.php) 中的初始化方式:
<?php
add_action( 'admin_enqueue_scripts', 'spielerportraits_style' );
add_action('admin_menu', 'spielerportraits_custom_menu_page');
function spielerportraits_custom_menu_page() {
$page = add_menu_page( 'Spielerportraits', 'Spielerportraits', 'manage_options', 'spielerportraits/spielerportraits-admin.php', '', '' ), 33 );
}
function spielerportraits_style() {
wp_enqueue_script( 'spielerportraits-admin-script', plugins_url('/script.js', __FILE__) );
}
global $jal_db_version;
$jal_db_version = "1.0";
function jal_install() {
global $wpdb;
global $jal_db_version;
$table_name = $wpdb->prefix . 'spielerportraits';
$sql = "CREATE TABLE $table_name (
id int NOT NULL AUTO_INCREMENT,
name tinytext NOT NULL,
gebdatum date',
PRIMARY KEY id (id)
);";
if( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name ) {
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
add_option( "jal_db_version", $jal_db_version );
}
}
register_activation_hook( __FILE__, 'jal_install' );
?>