Неожиданный токен N в JSON в позиции 2 - PullRequest
0 голосов
/ 30 сентября 2019

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

register.ts

import { Component, ViewChild } from '@angular/core';
import { NavController, AlertController } from 'ionic-angular';
import { HomePage } from '../home/home';
import { Http, Headers, RequestOptions }  from "@angular/http";
import { LoadingController } from 'ionic-angular';
import 'rxjs/add/operator/map';

@Component({
  selector: 'page-register',
  templateUrl: 'register.html'
})
export class RegisterPage {


@ViewChild("email") email;
@ViewChild("username") username;
@ViewChild("mobile") mobile;
@ViewChild("userpass") userpass;


  constructor(public navCtrl: NavController, public alertCtrl: AlertController,  private http: Http,  public loading: LoadingController) {

  }

  Register(){
 //// check to confirm the username, email, telephone and userpass fields are filled

  if(this.username.value=="" ){

 let alert = this.alertCtrl.create({

 title:"ATTENTION",
 subTitle:"Username field is empty",
 buttons: ['OK']
 });

 alert.present();
  } else
 if(this.email.value==""){

 let alert = this.alertCtrl.create({

 title:"ATTENTION",
 subTitle:"Email field is empty",
 buttons: ['OK']
 });

 alert.present();

}
 else 
  if(this.mobile.value=="" ){

 let alert = this.alertCtrl.create({

 title:"ATTENTION",
 subTitle:"Mobile number field is empty",
 buttons: ['OK']
 });

 alert.present();
  } else
 if(this.userpass.value==""){

 let alert = this.alertCtrl.create({

 title:"ATTENTION",
 subTitle:"userpass field is empty",
 buttons: ['OK']
 });

 alert.present();

}
 else 
 {


var headers = new Headers();
    headers.append("Accept", 'application/json');
    headers.append('Content-Type', 'application/json' );
    let options = new RequestOptions({ headers: headers });

  let data = {
        username: this.username.value,
        userpass: this.userpass.value,
        mobile: this.mobile.value,
        email: this.email.value      
      };


 let loader = this.loading.create({
    content: 'Processing please wait...',
  });

 loader.present().then(() => {
this.http.post('http://localhost/mobile/register.php',data, options)
.map(res => res.json())
.subscribe(res => {

 loader.dismiss()
if(res=="Registration successfull"){
  let alert = this.alertCtrl.create({
    title:"CONGRATS",
    subTitle:(res),
    buttons: ['OK']
    });

    alert.present();
 this.navCtrl.push(HomePage);

}else
{
 let alert = this.alertCtrl.create({
 title:"ERROR",
 subTitle:(res),
 buttons: ['OK']
 });

 alert.present();
  } 
});
});
 }

}
}

register.php

<?php

if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

  require "dbconnect.php";

    $data = file_get_contents("php://input");
    if (isset($data)) {
        $request = json_decode($data);
        $username = $request->username;
        $userpass = $request->userpass;
        $mobile = $request->mobile;
        $email = $request->email;
    }

$username = stripslashes($username);
$userpass = stripslashes($userpass);
$userpass = sha1($userpass."@la]#}^(dy*%-Ga=/,Ga!.");

$sql = "INSERT INTO users (username,userpass,mobile,email)
        VALUES ('$username','$userpass','$mobile','$email')";

if ($con->query($sql) === TRUE) {
    echo "New account created successfully";
} 

else {
    echo "Error: " . $sql . "<br>" . $con->error;
}

    echo json_encode($data);

?>

enter image description here enter image description here

1 Ответ

1 голос
/ 30 сентября 2019

Ваша проблема в том, что все , которое выводится из вашего скрипта, заканчивается в вашем ответе ajax. Поскольку вы пытаетесь декодировать это как JSON, вам нужно убедиться, что оно содержит только это. Поэтому вместо того, чтобы выводить сообщение о состоянии, включите его в свой JSON со статусом success или аналогичным. Как то так:

if ($con->query($sql) === TRUE) {
    $status = "success";
    $message = "New account created successfully";
} 
else {
    $status = "error";
    $message =  "Error: " . $sql . "<br>" . $con->error;
}

echo json_encode(array('status' => $status, 'message' => $message, 'data' => $data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...