2014-04-30 57 views
0

我有一個AJAX調用從我的數據庫中刪除頁面返回成功,但我不太清楚如何返回成功信息並使用它:如何在Ajax調用

我的AJAX調用看起來是這樣的:

$('.delete_button').click(function() { 
    $.ajax({ 
     url: 'delete_page.php', 
     dataType: 'json', 
     async: false, 
     type: 'post', 
     data: { 
      page_id: id 
     }, 
     succes:function() { 
      alert('something'); 
      if (s.Err == false) { 
       window.location.reload(true); 
      } 
     }, error:function(e){ 

     } 
    }); 
}); 

在我delete_page.php我有這樣的:

<?php 
require 'core/init.php';  

$id = $_POST['page_id']; 
$page_id = $id[0]; 

$delete_page = DB::getInstance()->delete('pages', array('id', '=', $page_id)); 

if ($delete_page) { 
    $output['Err'] = false; 
} else { 
    $output['Err'] = true; 
} 

return json_encode($output); 

會刪除的頁面,但它並沒有運行,如果聲明,它不提醒什麼。我該如何解決?

回答

2

在你的PHP腳本,你需要輸出的數據並沒有返回它:

header('Content-Type: application/json'); 
echo json_encode($output); 

然後,在JavaScript文件,你需要檢索數據:

success: function (data) { // It's success not succes, and you need the parameter 
    alert('something'); 
    if (data.Err == false) { 
     window.location.reload(true); 
    } 
} 
+0

成功拼寫的好成績 – Steve

+0

謝謝,這是造成問題的拼寫:) – Legarndary

6

不使用收益,實際輸出數據,以正確的標題:

//return json_encode($output); 
header('Content-Type: application/json'); 
echo json_encode($output); 
+0

感謝您的時間和回答:) 你能不能解釋一下,也許我有關內容類型的更多信息? – Legarndary

+0

當然,它只是一個http頭。它告訴客戶端(你的瀏覽器)數據的格式,在這種情況下是json。正常的html頁面將具有text/html的內容類型。在這裏看到更多的細節http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html – Steve

+0

謝謝你:) – Legarndary

0

如果是整個delete_page.php,它需要echo輸出,而不僅僅是返回。

0

這裏是一個稍處理這個優雅的方式。

更新您的delete_page.php腳本是這樣的:

<?php 

require 'core/init.php';  

$id = $_POST['page_id']; 
$page_id = $id[0]; 

// Init 
$output = array(
    'IsDeleted' = false, 
    'LastError' = '' 
); 

// Delete 
try { 
    $output['IsDeleted'] = DB::getInstance() 
          ->delete('pages', array('id', '=', $page_id)); 
} 
catch (Exception $ex) { 
    $output['LastError'] = $ex->getMessage(); 
} 

// Finished 
echo json_encode($output); 

?> 

那麼這樣的更新您的Ajax代碼:

$.ajax({ 
    url: 'delete_page.php', 
    dataType: 'json', 
    async: false, 
    type: 'post', 
    data: { 
     page_id: id 
    }, 
    dataType: 'json', 
    succes: function(result) { 
     if (result.IsDeleted) { 
      window.location.reload(true); 
     } else { 
      alert('Failed to delete. Last error: ' + result.LastError) 
     } 
    }, 
    error:function(e) { 
    } 
});