2017-06-13 61 views
3

我無法將AJAX數據傳遞到PHP。我對PHP很有經驗,但是JavaScript是新手。未傳遞到PHP的AJAX數據

HTML/JavaScript的

<input type="text" id="commodity_code"><button id="button"> = </button> 

<script id="source" language="javascript" type="text/javascript"> 

$('#button').click(function() 
{ 
    var commodity_code = $('#commodity_code').val(); 

    $.ajax({          
    url: 'get_code.php', 
    data: "commodity_code: commodity_code", 
    dataType: 'json', 
    success:function(data) { 
     var commodity_desc = data[0]; 
     alert(commodity_desc); 
    } 
    }); 
}); 

</script> 

PHP

$commodity_code = $_POST['commodity_code']; 

$result = mysql_query("SELECT description FROM oc_commodity_codes WHERE code = '$commodity_code'"); 
$array = mysql_fetch_row($result); 
echo json_encode($array); 

我知道一般的AJAX獲取和PHP代碼工作,我可以手動創建$ commodity_code變量和腳本作品精細。我認爲我的問題在於將AJAX數據傳遞給我的PHP腳本。

+2

您正在使用的'mysql_'數據庫庫已過期。它幾年前不推薦使用,並且由於安全問題(包括但不限於)無法支持參數化查詢以更好地防止SQL注入攻擊而在PHP 7中完全刪除。實際上,您正在運行不受支持的代碼,並且您的系統非常容易受到注入攻擊。如果這是新代碼,那麼你絕對不應該使用'mysql_',如果它是舊代碼,你應該計劃升級a.s.a.p.您應該切換到'mysqli_'或'PDO'並開始使用參數化準備好的語句。 – ADyson

+0

謝謝,這是舊的代碼,將被改爲mysqli – Syn

回答

6

您忘記了在您的AJAX呼叫中添加method: 'POST'。你的電話有一些問題。檢查下面:

$.ajax({          
    url: 'get_code.php', 
    method: "POST",       // Change here. 
    data: {commodity_code: commodity_code}, // Change here. 
    dataType: 'json',      
    success:function(data) { 
     var commodity_desc = data[0]; 
     alert(commodity_desc); 
    } 
}); 

或者讓它簡單,使用速記功能:在此行data: "commodity_code: commodity_code",

$.post('get_code.php', {commodity_code: commodity_code}, function(data) { 
    var commodity_desc = data[0]; 
    alert(commodity_desc); 
}); 
+3

***澄清:***爲什麼添加'dataType:'json''我們可以在他的php中看到他正在返回一個數組'json_encode'? – guradio

+0

***理由:*** @guradio個人經驗。我沒有一個有效的解釋。很多次,刪除線爲我工作。 ':)' –

+0

@Jana你剛剛評論的內容沒有意義。你瞭解這個問題和我的答案嗎?你爲什麼評論這個? –

0

錯誤..你可以簡單的通過了commodity_code變量..

$.ajax({          
    url: 'get_code.php', 
    method: "POST",       
    data: commodity_code, 
    dataType: 'json',      
    success:function(data) { 
     var commodity_desc = data[0]; 
     alert(commodity_desc); 
    } 
});