AJAX PHP не работает в Node.js - PullRequest
0 голосов
/ 04 июля 2018

Проблема:

Когда я помещаю ссылку на PHP-файл в браузер, она прекрасно работает и обновляет мою базу данных, как и ожидалось.

Когда я вызываю его с помощью ajax из node.js, он отображает сообщение об успехе, но БД не обновляется.

Переменные Session не определены, поэтому, когда я изменил их на действительные числа, код все еще не работал. Что не так?


Мой код PHP:

subtract5.php:

<?php
header('Access-Control-Allow-Origin: http://cashballz.net:3000', false);
include 'mysql.php'; 
session_start(); 

$cash_amount = $_SESSION['cash_amount'];
$userid = $_SESSION['id'];
$_SESSION['cash_amount'] -= 0.05;

$mysql = new Mysql(); 

$result = $mysql->setCashAmount($cash_amount,$userid); 
if($result) 
{ 
echo $cash_amount; 
} 
else 
{ 
session_start(); 
session_unset(); 
session_destroy(); 
}
?>

mysql.php:

<?php
class Mysql 
{ 
protected $dsn; 
protected $username; 
protected $password; 
public $db; 


function __construct() 
{ 
//change this to your info (myDBname, myName, myPass) 
$this->dns= 'mysql:dbname=cashball_accounts;host=localhost;charset=utf8'; 
$this->username= 'myUser'; 
$this->password= 'myPass'; 
$this->db = new PDO($this->dns, $this->username, $this->password); 
} 


public function setCashAmount($cash_amount, $id) 
{ 
$sql = "UPDATE users SET cash_amount = :cash_amount - 0.05 WHERE id = :id"; 
$stmt = $this->db->prepare($sql); 
$stmt->bindParam(':cash_amount', $cash_amount, PDO::PARAM_STR); 
$stmt->bindParam(':id', $id, PDO::PARAM_STR); 
$result = $stmt->execute(); 
return $result; 
} 

} 
?>

Мой node.js (app.js) AJAX:

//cut 5 cents from account - php function
        $.ajax({
        type: "POST",
        url: 'http://cashballz.net/game/5game/subtract5.php',
        data: {}, 
        success: function (data) {
            alert(data);
        }
    });

Резюме:

  • PHP-файл работает с site.com с тем же AJAX-кодом и размещает ссылку в браузере.
  • PHP-файл выполняется с узла, но не обновляет БД
  • PHP-файл содержит неопределенные переменные $ _SESSION, но при замене БД по-прежнему не обновляется

Возможные решения:

  • Есть ли дополнительный код, который я могу вставить в AJAX, чтобы он сказал "передать" вызов site.com для вызова файла вместо вызова его прямо с узла?

Дополнительная информация:

  • Нет ошибок в журналах ошибок или консоли
  • Мне нужно использовать AJAX для ввода данных в файл позже
  • Решение должно быть безопасным

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...