HomeLập trìnhPhpThực thi lời...

Thực thi lời hứa trước khi tải tệp json php và nhận 500 lỗi máy chủ nội bộ


Tôi đã tạo một hàm PHP lặp lại JSON sau khi một biểu mẫu được gửi và tôi muốn tương tác với hàm đó bằng một yêu cầu lời hứa. Tôi liên tục gặp lỗi 500 máy chủ nội bộ và tôi không biết tại sao.

Đây là các tệp của tôi – đây là registerFail.js được cho là nhận JSON sau khi biểu mẫu được gửi để tôi có thể thông báo một tin nhắn, nó nằm trong thư mục chính:

window.onload = function(){

function get(url) {
    return new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.open("GET", url);
      xhr.onload = () => resolve(xhr.responseText);
      xhr.onerror = () => reject(xhr.statusText);
      xhr.send();
    });
  }

document.getElementById('register').addEventListener('submit', () => {
        let promise = get('/controllers/add-user.php').then((name) => {
        console.log(name);
    });
});
}

Đây là lớp php trình điều khiển của tôi trong thư mục /controllers/add-user.php và đó là nơi mà lời hứa trong registerFail.js được cho là lấy json từ

header('Content-type: text/javascript');

$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);

if(!$app['database']->nameTaken($_POST['username'])){

    $app['database']->insert('users', [

        'name' => $_POST['username'],

        'password' => $hash

    ]);
};

header('Location: /');

hàm ->nameTaken là JSON của echo.

Đây là hàm nameTaken nằm trong một thư mục và tệp khác. Chức năng này được thực hiện để kiểm tra xem một tên đã có trong cơ sở dữ liệu của tôi chưa. nếu một cái tên được đặt ở đó, thì hàm trả về false và tôi lặp lại json như vậy để thực hiện lời hứa của mình, để tôi có thể đưa ra cảnh báo về html sành điệu để cho người dùng biết rằng tên đó đã được sử dụng. –

`public function nameTaken($username){`

        $statement = $this->pdo->prepare('SELECT count(*) FROM users WHERE name = :name');

        $statement->execute(array('name' => $username));

        $res = $statement->fetch(PDO::FETCH_NUM);

        $exists = array_pop($res);

        if ($exists > 0) {

            $json = array(
                'success' => false
            );

            echo json_encode($json);

            return true;

        } else {
            //the name can be made
            return false;
        }
    }

Trong máy chủ của tôi, tôi nhận được những tin nhắn này:

[Thu Aug 16 12:16:18 2018] 127.0.0.1:44906 [200]: /
[Thu Aug 16 12:16:18 2018] 127.0.0.1:44910 [200]: /registerFail.js
[Thu Aug 16 12:16:22 2018] PHP Notice:  Undefined index: password in /home/orpheus/Practice_dev/imagePoster/controllers/add-user.php on line 5
[Thu Aug 16 12:16:22 2018] PHP Notice:  Undefined variable: app in /home/orpheus/Practice_dev/imagePoster/controllers/add-user.php on line 7
[Thu Aug 16 12:16:22 2018] PHP Fatal error:  Uncaught Error: Call to a member function nameTaken() on null in /home/orpheus/Practice_dev/imagePoster/controllers/add-user.php:7
Stack trace:
#0 {main}
  thrown in /home/orpheus/Practice_dev/imagePoster/controllers/add-user.php on line 7
[Thu Aug 16 12:16:22 2018] 127.0.0.1:44996 [500]: /controllers/add-user.php - Uncaught Error: Call to a member function nameTaken() on null in /home/orpheus/Practice_dev/imagePoster/controllers/add-user.php:7
Stack trace:
#0 {main}
  thrown in /home/orpheus/Practice_dev/imagePoster/controllers/add-user.php on line 7
 [Thu Aug 16 12:16:22 2018] 127.0.0.1:45000 [200]: /users

Có vẻ như lời hứa của tôi đang được thực hiện và cố gắng lấy json trước khi tệp php được tải nên không có tệp json nào ở đó và tôi đang gặp các lỗi này đối với các biến không xác định. Tôi thấy lỗi 500 trong tích tắc trước khi tệp php json /users ( /controllers/add-user.php) được tải và thấy tất cả các lỗi ở trên trong máy chủ của tôi, nhưng sau đó khi tệp php đã tải bài đăng từ biểu mẫu, tất cả đều hoạt động bình thường và tôi thấy đúng json, nhưng khi tôi được chuyển hướng trở lại tệp chính ‘/’, bảng điều khiển sẽ bị xóa và lời hứa của tôi không console.log json.

Đọc thêm  Tại sao không có thách thức PHP và mySQL

Vì vậy, tôi nghĩ rằng vấn đề của tôi là lời hứa thực thi ngay sau khi nút gửi của tôi được nhấp vào, nhưng tôi cần nó thực thi sau khi tệp php json được tải để tôi không gặp lỗi máy chủ 500 trong bảng điều khiển của mình và lỗi máy chủ từ thiết bị đầu cuối của tôi được hiển thị ở trên.

Làm cách nào tôi có thể thực hiện lời hứa của mình sau khi tệp php được tải và tôi được chuyển hướng trở lại trang ‘/’?



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status