2013-12-11 62 views
0

我想通過鏈接在後臺保存數據庫中的數據,併爲前端鏈接提供下載功能。但它給出了一個錯誤。提交表單與jquery中的鏈接參數

我的腳本 -

<script> 
$(document).ready(function(){ 
    $("#download").click(function(){ 
     var me = $(this), data = me.data('params'); 
     saveData(me); 
}); 

function saveData(me){ 
$.ajax({ 
     type: "POST", 
     url: "download_counter.php", 
     data: { client_id: "<? echo $client_id;?>", candidate_id: me } 
    }); 
} 
}); 
</script> 

這是鏈接(它看起來很好)

<a href="upload/<? echo $download;?>" id="download" data-params="{'ca_id':'<? echo $ca_id;?>'}"><button name="download"></button></a> 

download_counter.php樣子 -

<? 
if (isset($_POST['candidate_id'])) { // Form has been submitted. 
    $candidate_id = $_POST['candidate_id']; 
    $client_id= $_POST['client_id']; 
    $date = date("Y-m-d"); 
    echo "client - ".$client_id; 
    echo "candidate - ".$candidate_id; 
    $query = "INSERT INTO `downloads`(`client_id`, `candidate_id`, `download_date`) VALUES ('".$client_id."', '".$candidate_id."', '".$date."')"; 
    $result = mysql_query($query); 
} 
?> 

當我點擊鏈接,它允許下載文件,但數據庫不會更新。 請幫忙。

+0

因爲因爲用戶被髮送到一個新的頁面(下載)瀏覽器取消AJAX請求這是最有可能的。一種方法是在onclick函數中執行e.preventDefault()(添加e參數),然後在完成ajax時重定向用戶。或者在php中創建一個重定向頁面,然後重定向到下載。這也將計入沒有JS的用戶。 – ThoKra

回答

0

沒有與傳遞參數的功能SAVEDATA錯誤,讓你的Ajax請求不會發生:現在

$(document).ready(function(){ 
    $("#download").click(function(){ 
     var me = $(this), data = me.data('params'); 
     saveData(data); // was me 
}); 
+0

什麼都沒有發生。我不認爲即使我的腳本正在運行。 –

+0

對不起,現在工作正常 – apo

+0

查詢正在運行,但數據庫尚未更新。 :( –

0

檢查jQuery的click event handler,它說

// say your selector and click handler is somewhat as in the example 
$("some selector").click({param1: "Hello", param2: "World"}, some_function); 

// then in the called function, grab the event object and use the parameters like this-- 
function some_function(event){ 
    alert(event.data.param1); 
    alert(event.data.param2); 
} 
+0

這是什麼param1和param2。我想從我的鏈接中獲取值。如何做到這一點 –

0

數據庫更新,但它是沒有獲得candidate_id的價值。

我這樣做 -

<script> 
$(document).ready(function(){ 
    $("#download").click(function(){   
     $("#count").hide(); 
     var me = $(this), data = me.data('params'); 
     saveData(data); // was me 
}); 

function saveData(data){ 
$.ajax({ 
     type: "POST", 
     url: "counter.php", 
     data: { client_id: "2", candidate_id: data.ca_id } 
    }); 
} 
}); 
</script> 
+0

請console.log saveData函數中的'data'並將其粘貼在此處。 –

+0

Anil是什麼?以及如何做到這一點..? –

+0

我在說'控制檯。log()'函數,它會將傳入的參數記錄到控制檯。所以我想要你做的是在$ .ajax({---})之前的saveData函數中;寫'console.log(data);'然後查看控制檯中記錄的內容並粘貼該輸出。 –

0
I think on click the data you are reading is a string and in the given format. 
And you are passing that as data, but since it is not an valid id, 
that value in the database is not updated. 

Check this out