2017-06-13 7 views
3

PHPにAJAXデータを渡す際に問題があります。私はPHPで経験はありますが、JavaScriptは初めてです。AJAXデータがPHPに渡されない

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); 

私は手動での$ commodity_code変数とスクリプトの作品を作成することができますよう、一般的なAJAXフェッチとPHPのコードが動作している知っています良い。私の問題は、PHPスクリプトにAJAXデータを渡す際のどこかにあると思います。

+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); 
    } 
}); 

それとも簡単にするが、速記の機能を使用します:以下のチェック

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

***に変更されます***解説:なぜそれは危険な動き '' dataType: 'json''を追加するのですか? 'json_encode'? – guradio

+0

***正当な理由:*** @guradio個人的な経験。私はそれについて有効な説明がありません。多くの時代、その行を削除すると私のために働いた。 ':)' –

+0

@Janaあなたがちょうどコメントしたことは意味をなさない。質問と私の答えを理解しましたか?なぜあなたはこれをコメントしましたか? –

0

エラーこの行data: "commodity_code: commodity_code",に..あなたが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); 
    } 
}); 
関連する問題