2017-06-13 35 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); 
    } 
});