Как запустить PHP-скрипт на Angular при изменении ввода? - PullRequest
0 голосов
/ 19 марта 2019

Кажется, у меня проблемы с выполнением SQL-запроса на сервере через PHP при изменении ввода. Может кто-нибудь взглянуть на мой код и помочь мне?

Служба, отвечающая за обработку http-запроса к серверу:

import { Injectable } from '@angular/core';
import { HttpClient } from "@angular/common/http";

@Injectable({
  providedIn: 'root'
})
export class CrudService {
  public url = 'http://localhost/web_api/';
  constructor(private http: HttpClient) { }

  registerNormal(data)
  {
    return this.http.post(this.url + 'registerNormal.php', data);
  }

  accountExists(data)
  {
    return this.http.get(this.url + 'existingAccounts.php', data);
  }
}

Функция, отвечающая за передачу данных

  CheckAccountAvailability(values)
  {
    const registerNormalFormData = new FormData();
    registerNormalFormData.append('username', values.username);

    if (this.registerNormal.get('username').valid)
      this.crudService.accountExists(registerNormalFormData).subscribe(result => {console.log(result)});
  }

Файл PHP работает нормально, так как я проверил его с почтальоном, а также функция registerNormal() прекрасно работает.

Кажется, я не могу точно определить проблему.

Большое спасибо!

EDIT:

Ниже приведен HTML-код для компонента, который вызывает функцию. Функция вызывается, но результат, возвращаемый angular, равен NULL, однако PHP API возвращает результат в порядке с почтальоном

   <input matInput placeholder="User Name" formControlName="username" required (input)="CheckAccountAvailability(registerNormal.value)">

РЕДАКТИРОВАТЬ 2:

Ниже приведен код php для существующих учетных записей. Php

<?php
if ($_GET) 
{
    // include database connection
    include 'config/database.php';

    try
    {        
        // check if account exists in database
        $q_normalAccountExists = "SELECT * FROM normal_accounts WHERE username=:username";
        // $q_bandAccountExists = "SELECT * FROM band_accounts WHERE username=:username";

        // prepare queries to check if accounts exist in database
        $checkNormalAccount = $con->prepare($q_normalAccountExists);
        // $checkBandAccount = $con->prepare($q_bandAccountExists);

        // GET username
        $username = $_GET['username'];

        // bind parameters to check if username exists in database
        $checkNormalAccount->bindParam(':username', $username);
        // $checkBandAccount->bindParam(':username', $username);

        // execute username exists in database query
        $checkNormalAccount->execute();
        // $checkBandAccount->execute();

        if ($checkNormalAccount->rowCount() == 0/* && $checkBandAccount->rowCount() == 0*/)
        {
            echo json_encode(array('result'=>false));
        }

        else
        {
            echo json_encode(array('result'=>true));
        }
    }

    // show error
    catch(PDOException $exception)
    {
        die('ERROR: ' . $exception->getMessage());
    }
}
?>

РЕДАКТИРОВАТЬ 3:

Кажется, что изменение запроса GET на запрос POST решило проблему. Однако кто-нибудь может сказать мне, почему GET-запросы не будут работать?

...