各位大大好
小弟這問題卡了很久
我用Jquery做了一個ajax傳遞
後端是用資料庫去查找資料
查到之後再回傳
#winner 是個dropdownlist
以下是這段Jquery
$(document).ready(function(){
$('body').on('change','#winner',function(){
var id = $('#winner').val();
$.ajax({
method:'GET',
url:'ajax_vip.php',
data: {
'id':id
},
dataType: 'json',
success:function(response){
$.each(response,function(index,element){
$('#address').text(element.address),
$('#phone').text(element.phone),
$('#mobile').text(element.mobile),
$('#com_mail').text(element.com_mail),
$('#per_mail').text(element.per_mail);
});
},
error:function(xhr){
console.log("發生錯誤: " + xhr.status + " " + xhr.statusText + " 錯誤訊息:" +xhr.text);
}
});
});
});
附上後端
if($id <> "")
{
//地址和家電
$q = "select add,ph from em where no = '$id'";
$r = mysql_query($q,$link) or die("資料庫連結失敗");
list($address,$phone) = mysql_fetch_array($r);
//公司email,個人email,手機
$q1 = "select firstemail,secondemail,mobile from exam.empdutytbl where no = '$id'";
$r1 = mysql_query($q1,$link)or die("$q1");
list($com_mail,$per_mail,$mobile) = mysql_fetch_array($r1);
$address = urlencode($address);
$data_array = array(
'address' => $address,
'phone' => $phone,
'com_mail' => $com_mail,
'per_mail' => $per_mail,
'mobile' => $mobile);
$data_array_url = json_encode($data_array);
$data_json = urldecode($data_array_url);
echo $data_json;
}
我用firebug去檢測
發現他的確有傳回json格式的資料
但是卻沒有出現在欄位中
感謝各位大大
看一下你的 browser console
network 那頁
看後端回傳的是什麼
或者在你的js加上
console.log(response)
看拿到的是什麼
兩個我都試了
皆沒有任何訊息出現@@~
沒有任何訊息
他是有回傳空值還是都沒回傳
都沒回傳
一片空白
dragonH大
可是我在sources下斷點的時候
onchange是會停的
這不就代表有觸發嗎?
可能要先釐清一下
network 沒有任何訊息
是指沒有 send http request
還是有 send http request
但是後端沒有回傳任何 data
後者的話
問題可能在後端
可是我在console下斷點的時候
onchange是會停的
這不就代表有觸發嗎?
最簡單的
在你 change 的那個 function
隨便加個 console.log('hello ithelp')
就知道了
還有幾個線索附上
第一個
我在sources下斷點的時候
看 $('body').on('change','#winner',function() 這行
他會顯示 Unexpected end of input
可是我檢查過括號 都對齊了才對
還有一個
就是我ajax裡面的每一個屬性
他都回傳
success is not defined(以success為例)這種錯誤給我
話說
你應該有 import juqery 吧
或許有錯誤截圖會比較清楚
是指沒有 send http request
還是有 send http request
我有用輔助工具Firebug測試
確實是有回傳json資料的
只是google的network中沒有顯示我就不明白了
在你 change 的那個 function
隨便加個 console.log('hello ithelp')
console.log不會顯示
但alert會
另外
$.each(response,function(index,element){
$('#address').text(element.address),
$('#phone').text(element.phone),
$('#mobile').text(element.mobile),
$('#com_mail').text(element.com_mail),
$('#per_mail').text(element.per_mail)
});
我沒有細看
不過這裡應該是要 ;
結尾
不過這裡應該是要 ; 結尾
那個我後來有補上 sorry這邊問題忘了補
但目前還是顯示不出來
response抓的到
反而是element not defined
我指的是這樣
$.each(response,function(index,element){
$('#address').text(element.address);
$('#phone').text(element.phone);
$('#mobile').text(element.mobile);
$('#com_mail').text(element.com_mail);
$('#per_mail').text(element.per_mail);
});
json 格式的話是物件不是陣列吧 each 是用在陣列
可以直接 response.address 試試看
json 格式的話是物件不是陣列吧 each 是用在陣列
可是他的 error message 都不是有關這個
就很奇怪XD
只是很好奇網路上有很多用each在處理json的回傳資料
他們的資料應該是長這樣
[
{
key: 'xxx',
value: 'xxx'
},
{
key: 'xxx',
value: 'xxx'
},
]
吧
最外層是個 array
最外層是個 array
真的==
抱歉我這沒注意到 謝謝兩位大大的賜教
只是很好奇網路上有很多用each在處理json的回傳資料
這個你可以去看一下 json 格式的說明
如果你的 json 長這樣
[
{"address":...}
{"phone": ...}
{"mobile": ...}
{"com_mail": ...}
{"per_mail": ...}
]
對 js 來說就是陣列
dragonH js 常常跳出很奇怪的錯誤啊XD
後端的第一行
if($id <> "")
是否應該是
if($_GET['id'] <> "")
才對啊?
又,如果id不應空白,是否在前端就該攔下來,
不該到後端再去判斷?浪費社會資源?