[英]using jquery post to send values to php file
我正在嘗試在javascript / jquery中編寫一個腳本,該腳本會將值發送到php文件,該文件隨后將更新數據庫。 問題是PHP文件沒有讀取這些值,我也不知道為什么。 我對值進行了硬編碼,並且效果很好。 有任何想法嗎?
這是JavaScript:
var hours = document.getElementById("hours");
var i = 1;
while(i < numberofMembers) {
var memberID = document.getElementById("member"+i);
if(memberID && memberID.checked) {
var memberID = document.getElementById("member"+i).value;
$.ajax({
type : 'post',
datatype: 'json',
url : 'subtract.php',
data : {hours : hours.value, memberID : memberID.value},
success: function(response) {
if(response == 'success') {
alert('Hours subtracted!');
} else {
alert('Error!');
}
}
});
}
i++;
}
}
減去.php:
if(!empty($_POST['hours']) AND !empty($_POST['memberID'])) {
$hoursToSubtract = (int)$_POST['hours'];
$studentIDString = (int)$_POST['memberID'];
}
$query = mysql_query("SELECT * FROM `user_trials` WHERE `studentid` = '$studentIDString' LIMIT 1");
編輯:按照@Daedal的代碼更新了代碼。 我仍然無法在PHP中獲取數據,嘗試運行FirePHP,但是我所得到的只是“配置文件仍在運行”,然后什么也沒有。
這可能對您有幫助:
function subtractHours(numberofMembers) {
var hours = document.getElementById('hours');
var i = 1;
while(i < numberofMembers) {
// Put the element in var
var memberID = document.getElementById(i);
// Check if exists and if it's checked
if(memberID && memberID.checked) {
// Use hours.value and memberID.value in your $.POST data
// {hours : hours.value, memberID : memberID.value}
console.log(hours.value + ' - ' + memberID.value);
// $ajax is kinda longer version of $.post api.jquery.com/jQuery.ajax/
$.ajax({
type : 'post',
dataType : 'json', // http://en.wikipedia.org/wiki/JSON
url : 'subtract.php',
data : { hours : hours.value, memberID : memberID.value},
success: function(response) {
if( response.type == 'success' ) {
alert('Bravo! ' + response.result);
} else {
alert('Error!');
};
}
});
}
i++;
}
}
和PHP部分:
$result = array();
// Assuming we are dealing with numbers
if ( ! empty( $_POST['hours'] ) AND ! empty( $_POST['memberID'] ) ) {
$result['type'] = "success";
$result['result'] = (int) $_POST['hours'] . ' and ' . (int) $_POST['memberID'];
} else {
$result['type'] = "error";
}
// http://php.net/manual/en/function.json-encode.php
$result = json_encode( $result );
echo $result;
die();
另外,您可能不希望CSS #ID以數字開頭或僅由數字組成。 CSS技巧對它的解釋很好http://css-tricks.com/ids-cannot-start-with-a-number/
您可以通過將一些字符串放在前面來簡單地解決該問題:
var memberID = document.getElementById('some_string_' + i);
這不是理想的解決方案,但可以幫助您解決此錯誤。
干杯!
更新:
我想到的第一件事是帶數字的#ID,但似乎JS並不在乎(至少不是CSS那樣),但是最好不要使用所有數字。 所以整個錯誤是因為document.getElementById()
僅接受字符串。
參考: https : //developer.mozilla.org/zh-CN/docs/DOM/document.getElementById id是區分大小寫的字符串,表示要查找的元素的唯一ID 。
很少有成員提到過將var i
轉換為字符串,這是解決方案的關鍵。 所以var memberID = document.getElementById(i);
將引用轉換為字符串。 我想在您的原始代碼中也可以完成類似的事情,如果您在循環中定義了wright while(i < numberofMembers) {
var i to string i = i.toString();
但我認為我們目前的解決方案更好。
嘗試刪除''fx:
$.post (
"subtract.php",
{hours : hours, memberID : memberID}
嘗試這個
$.ajax({type: "POST",
url:"subtract.php",
data: '&hours='+hours+'&memberID='+memberID,
success: function(data){
}
});
你也可以嘗試這樣的檢查
$(":checkbox").change(function(){
var thisId = $(this).attr('id');
console.log('Id - '+thisId);
});
$studentID = $_GET['memberID'];
$hoursToSubtract = $_GET['hours'];
嘗試這個:
$.post("subtract.php", { hours: hours, memberID : memberID })
.done(function(data) {
document.body.style.cursor = "auto";
});
嘗試使用此...
$.post("subtract.php", { hours: hours, memberID : memberID })
.done(function(data) {
$(body).css({ 'cursor' : 'auto' });
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.