プロが教える店舗&オフィスのセキュリティ対策術

商品コードを入力したら、AJAXで商品名と価格を取得して表示させ、それを確認して個数を入力して注文票を作ろうとしています。

商品名だけの取得は何とかできたのですが、商品名と価格といったように複数データを取得するのに苦労しています。
独学のプログラミングなので初歩的な所が分かっていないのだろうと思いますが、JSON形式で受け取ればいいのだろうと考えて、そうしているのですが、うまくいきません。
下記は、商品名だけなら取得できているコードですが、どこを修正したらいいでしょうか。

よろしくお願いします。

ファイル名:test1.php
<html>
<head>
<title>test</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7 …
<script type='text/javascript'>
$(document).ready(function(){
$("#goodsid").keyup(function(e){
var search_val=$("#goodsid").val();
$.post("./SubTest1.php",{search_term : search_val},function(data){$("#goodsname").html(data);})
})
});
</script>
</head>
<body>
<form id="searchform" method="post">
<div>
<label>商品番号</label>
<input type="text" name="goodsid" id="goodsid" />
</div>
</form>
<div id="goodsname"></div>
<div id="goodsprice"></div>
</body>
</html>


ファイル名:SubTest1.php
<?php
ini_set("default_charset","utf-8");

// MySQLクラスファイルの取り込みとインスタンスの作成
require_once("../mysql.php");
$mysql = new MySQL;

$term = $_POST["search_term"];

$sql = "SELECT goods_name,goods_price FROM `goods_table` WHERE goods_num ='".$term."'";
$mysql->query($sql);
$row = $mysql->fetch();
// ここまででデータを取得している

if ($row){
$goodsname = $row['goods_name'];
}else{
$goodsname = "";
}

echo $goodsname;//呼び出し元のtest1.phpに返す値

?>

A 回答 (1件)

こんにちは。



PHPにはJSON形式で返してくれる便利な関数があります。

==== PHP側の改造点
$array = array();
$array['name'] = $row['goods_name'];
$array['price'] = $row['goods_price'];

header ( 'Content-type: application/json; charset=utf-8' );
echo json_encode ( $array );

==== JS側の改造点

$.post(
"./SubTest1.php",
{search_term : search_val},
function(json){
var data = json.name + ',' + json.price;
$("#goodsname").html(data);
}
);

こんな感じになると思います。

PHPの配列の添字がそのままJSONのキーとなります。
なのでjson.nameとjson.priceでそれぞれの値が取得できます。

この回答への補足

失礼いたしました。私のミスでした。
ご回答の通りで全く問題なく動作しました。
長時間悩んだものが解決しました。
本当にありがとうございました。

補足日時:2012/08/17 17:58
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

やってみたのですが、結果として、
undefined,undefined
と表示されました。

var data = json.name + ',' + json.price; の部分の
json.nameとjson.priceがそれぞれundefinedと表示されているようです。

あと、商品名だけ表示させようとして、上記の部分を
var data = json.name;
に変更してやってみると、何も表示されませんでした。
私としては、undefinedと表示されると思っていたのですが....。

引き続き、調べてみますが、何かご助言などありましたら、よろしくお願いします。

お礼日時:2012/08/17 17:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!