簡體   English   中英

使用jQuery發布將值發送到PHP文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM