2013-07-09 56 views
1

我使用JavaScript事件 「的onchange」 有一個工作代碼:AJAX查詢的onclick未捕獲的SyntaxError

<select id="mySelect" onchange="change_table(this)"> 

jquery的:

unction change_table(elem) { 

var adressesInfo; 

$.ajax({ 
    type: "POST", 
    url: "test.php",   
    data: {id: elem.value}, 

    success: function(data){ 
     adressesInfo = jQuery.parseJSON(data); 
    }, 

    async: false 
}); 

和PHP:

$data = array(); 
[...] 
print json_encode($data); 

這是工作正常。

現在,我想這樣做完全一樣的,但在th元素使用onclick事件:

$(function(){ 
    $("th").on('click', function(e){ 
     change_table($('#mySelect')[0].value); 
    }); 
}) 

(這可能沒有多大意義的事,但這只是爲了舉例起見)

當我這樣做,我得到的錯誤Uncaught SyntaxError: Unexpected token <

我爲什麼會用onchange事件,並沒有onclick事件工作有點糊塗了,有什麼區別?我有點新jquery/ajax。

感謝您的幫助。

回答

1

您的change_table函數需要一個可從(data: {id: elem.value})中獲取值的元素。因此,在第二種情況下,你應該直接供給mySelect

$("th").on('click', function(e){ 
    change_table($('#mySelect')[0]); 
}); 
+0

現在我覺得很蠢,我一直在尋找這個3小時的時間:<隧道視力更差:D – user1278743

0
$("th").click(function(){ 
     change_table($('#mySelect')[0].value); 
    }); 

請試試這個。

0

它看起來像你的錯誤的jQuery試圖從你的PHP,這可能意味着你的後端解析HTML輸出爲提高錯誤,可能是由於張貼了錯誤的數據。

原始change_table函數將一個元素作爲其唯一參數,並且在最後一個示例中,您將它傳遞給已經評估過的字符串。也許這就解釋了爲什麼錯誤的數據會傳送到你的服務器。

另外:沒有必要在jQuery中明確地解析json。您可以在您的ajax設置中使用dataType: 'json',並且反序列化的json將傳遞給您的success處理程序。如果失敗,你的error處理程序將會觸發。

相關問題