2013-08-26 53 views
-2

我有一個用戶輸入數據的表單和一個顯示數據庫中所有行的表單。現在,當用戶單擊其中一行旁邊的「編輯」鏈接時,我想將該ID發佈到PHP文件,並將該行中的數據加載到表單中。接收jQuery ajax在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'); 

?> 
+0

您應該爲ajax-request指定回調。 –

+1

檢查控制檯,你確定請求實際上正在經歷嗎? – tymeJV

+0

是什麼讓你認爲jQuery代碼的作品?你可能會得到警報,這並不意味着阿賈克斯調用正在工作 –

回答

0

這是一種重新加載問題。這是我做過什麼,使其工作:

jQuery('a.edit').on('mousedown', function(){ 
    var id = jQuery(this).attr('data-title'); 
    alert(id); 
    jQuery.ajax({ 
     url: document.location, 
     data: {id: id}, 
     success: function(data){ 
      var newDoc = document.open("text/html", "replace"); 
      newDoc.write(data); 
      newDoc.close(); 
     } 
    }); 
}); 

不是文檔的只是更換零件,這種方法讓你頁面的歷史,這是對用戶非常有幫助。

-3

變化$_GET$_POST爲您發佈的數據

+2

如果'method'參數未傳遞給'$ .ajax',則會考慮GET' –

-1

需要通知請求方法的類型:

$.ajax({ 
type: "GET", 
... 
+0

GET方法是默認的,不需要聲明它 – iEmanuele

+0

GET是默認的。 – eevaa

0

通常Ajax調用可能是這樣的:

jQuery.ajax({ 
    url: ajaxurl, // for example a PHP file that will process the request 
    data:{ 
    mykey: myvalue 
    }, 
    success: function(data){ 
    console.log(data); 
    } 
}); 

和PHP文件可能如下所示:

$mykey = isset($_GET['mykey']) ? $_GET['mykey'] : false; 

if($mykey){ 
    //Do whatever you like with this, but you need to print out something: a return value 
    echo $mykey 
} 

我認爲你需要echo值由load_data($id);返回,如果該值是一個數組我建議你:

echo json_encode(load_data($id)); 

希望它能幫助!讓我知道如果你卡住