Не удалось получить доступ к данным, отправленным через ajax в php - PullRequest
0 голосов
/ 03 апреля 2020

Итак, я посылаю переменную через ajax в моем файле php. Вот мой код

getVoteCount: function(){
    App.contracts.Election.deployed().then(function(instance) {
        for(i=0; i<4; i++){
        instance.candidates(i).then(function(candidate) {
            var vName = candidate[1];
            var vCount = candidate[2];
            var x = (vCount+" ");
            var y = vName;
                $(document).ready(function() {
                $.ajax({
                    method: 'POST',
                    url: 'http://localhost/Election/EVoting/src/MegaProjectWebsite/generateResult.php',
                    data: {'vote_to_send' : x},
                }).done(function(result) {
                    result1 = JSON.parse(JSON.stringify(result));
                    **console.log("Result is "+result1);**
                })
            })

Теперь мой код php выглядит следующим образом:

<?php

    header('Access-Control-Allow-Origin: *');
    echo "hello";
        $x =  $_POST['vote_to_send'];
        echo $x;
    $con = mysqli_connect('localhost', 'root', '', 'letsvote');
    $sql = "insert into result (vote_count) values (".$_POST['vote_to_send']. ")";
    if(mysqli_query($con, $sql))
    {echo "done";}
    else{
      echo mysqli_error($con);
}

Проблема в том, что я не могу получить доступ к переменной ($_POST['vote_to_send']). Выдает ошибку:

Примечание: неопределенный индекс: voice_to_send в C: \ xampp \ htdocs \ Election \ EVoting \ src \ MegaProjectWebsite \ generateResult. php в строке 4

Из-за этого операция вставки также не выполняется. Однако результат отображается в консоли в result1 (указан жирным шрифтом выше) в функции .done(). Я не могу понять, почему это происходит!

1 Ответ

0 голосов
/ 03 апреля 2020

Вы забыли упомянуть dataType в вашем AJAX звонке. PHP на стороне сервера не получает информацию о типе данных, следовательно, он выдает ошибку.

$(document).ready(function() {
                $.ajax({
                    method: 'POST',
                    url: 'http://localhost/Election/EVoting/src/MegaProjectWebsite/generateResult.php',
                    data: {'vote_to_send' : x},
                    dataType: 'json'
                }).done(function(result) {
                    result1 = JSON.parse(JSON.stringify(result));
                    **console.log("Result is "+result1);**
                })

dataType указывает, какой тип данных jQuery ожидает от сервера. Если это JSON, сделайте dataType:'json' или что-то еще соответственно.

...