2012-06-05 26 views
1

我遇到困難,因爲我跟隨某人elses代碼,如果有人可以幫助我,我將不勝感激。PHP/Ajax - 發送一個JQuery值到PHP腳本

基本上我有一個顯示預訂列表的Jqgrid,當你雙擊一行時,它會打開一個顯示關於預訂的所有細節的jqdialog。

我有一個變量定義,它是我想傳遞給php腳本的預訂引用。

var brData = rowData['bookref']; 

然後我試圖通過AJAX發送此:

function getGridRow(brData) { 

$.ajax({ 

    // Request sent from control panel, so send to cp.request.php (which is the handler) 
    url: 'scripts/php/bootstrp/all.request.php', 
    type: 'POST', 

    data: { 

     ft: "getDGRow", 
     type: 'POST', 
     data: 'fnme=getDGRow&row_data='+brData, 
     //row_data: rowData, 


     id: null, 
     condition: null 
    }, 
    dataType: 'xml', 
    timeout: 20000, 
    error: function(){ 
     $('#cp-div-error').html(''); 
     $('#cp-div-error').append('<p>There was an error inserting the data, please try again later.</p>'); 
     $('#cp-div-error').dialog('open'); 
    }, 
    success: function(response){ 


    } 
}); 

這是all.request.php情況:

case 'getDGRow': 
header('Content-type: text/xml'); 
DatagridController::getGridRow($_REQUEST['row_data']); 
break; 

而這正是我想通過變量'brData':

public static function getGridRow($row_data) { 


    $pdo = new SQL(); 
    $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass); 

    try { 

     $query = "SELECT * FROM tblbookings WHERE bookref = '$row_data'"; 

I現在發現這非常令人困惑,所以任何幫助將不勝感激。目前$ row_data是我的PHP函數是空白的,所以顯然它不是從數據庫中選擇任何行。

回答

2

從驗證javascript函數未傳遞空白變量開始。嘗試提醒變量「brData」。其次,驗證ajax調用是否成功,可能是通過使用螢火蟲的控制檯。第三,確保PHP收到它並可以進入該功能。你可以試試

public static function getGridRow($row_data) { 
    echo $row_data; 
    exit; 
} 

在你的PHP文件中並提醒你的html值。

function getGridRow(brData) { 
    $.ajax({ 
     //...blah blah blah 
     success: function(response){ 
      alert(response); 
     } 
    }); 
} 

如果你能收到你的腳本警報,我想,你可以使用一個由你的PHP腳本發回給你的變量的值嘗試手動是 查詢到你的數據庫的最後一件事。誰知道,生成的查詢確實沒有結果。

+0

感謝您的幫助,我可以確認提醒變量brData警報正確的值,並且ajax調用成功,因爲我已經把response = brData;在成功函數中,這返回正確的值。該值沒有被傳遞給getGridRow函數,因爲echo $ row_data不會返回任何內容。任何想法爲什麼? – nsilva

+0

這是一件好事,你發現問題開始的地方。你需要使用這個調試器,檢查函數是否被調用,或者傳遞給函數的變量是否爲空。 – macinville

+0

好吧,我已將ajax請求更改爲'GET',並在我的getGridRow函數中測試並將echo $ rowdata;它返回正確的行,但仍未選擇行等於預訂參考的所有預訂。 $ query =「SELECT * FROM tblbookings WHERE bookref ='$ rowdata'」,在這一點上$ rowdata是空的,但如果我在這個函數的開始處回顯$ rowdata它給了我正確的預訂參考號......任何想法? – nsilva