首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >离子和PHP的意外标记< in JSON‘错误

离子和PHP的意外标记< in JSON‘错误
EN

Stack Overflow用户
提问于 2018-07-02 12:15:49
回答 1查看 342关注 0票数 1

我是新的离子,想知道我的脚本是错误的还是离子代码。它抛出此错误:

错误SyntaxError:位于0位置的JSON中的意外令牌<

我检查了所有的东西,但都没有成功!我怀疑这是PHP文件,这也是我希望被引导的原因!

home.ts

代码语言:javascript
运行
复制
import { Component, ViewChild } from '@angular/core';
    import { NavController, AlertController } from 'ionic-angular';
    import { RegisterPage } from '../register/register';
    import {Http, Headers, RequestOptions}  from "@angular/http";        
    import { LoadingController } from 'ionic-angular';        
    import 'rxjs/add/operator/map';

    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })
    export class HomePage {
      @ViewChild("username") username;        
      @ViewChild("password") password;          
      data:string;

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

      signUp(){        
          this.navCtrl.push(RegisterPage);          
        }

        signIn(){        
          //// check to confirm the username and password 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.password.value==""){

          let alert = this.alertCtrl.create({

          title:"ATTENTION",

          subTitle:"Password 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,

          password: this.password.value

          };

          let loader = this.loading.create({

          content: 'Processing please wait…',

          });

          loader.present().then(() => {

          this.http.post('http://localhost/shashank/login.php',data,options)

          .map(res => res.json())

          .subscribe(res => {

          console.log(res)


          loader.dismiss()

          if(res=="Your Login success"){

          let alert = this.alertCtrl.create({

          title:"CONGRATS",

          subTitle:(res),

          buttons: ['OK']

          });
          alert.present();

          }else

          {

          let alert = this.alertCtrl.create({

          title:"ERROR",

          subTitle:"Your Login Username or Password is invalid",

          buttons: ['OK']

          });

          alert.present();

          }

          });

          });

          }

          }

          }

login.php 脚本

代码语言:javascript
运行
复制
<?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;

        $password = $request->password;

                }

      $username= mysqli_real_escape_string($con,$username);

      $password = mysqli_real_escape_string($con,$password);

       $username = stripslashes($username);

      $password = stripslashes($password);

    $sql = "SELECT id FROM users WHERE username = '$username' and password = '$password'";

      $result = mysqli_query($con,$sql);

      $row = mysqli_fetch_array($result,MYSQLI_ASSOC);

      $active = $row['active'];

      $count = mysqli_num_rows($result);



      // If result matched myusername and mypassword, table row must be 1 row                    

      if($count > 0) {

     $response= "Your Login success";

      }else {

    $response= "Your Login Email or Password is invalid";       

      }

 echo json_encode( $response);

?>

控制台输出:

代码语言:javascript
运行
复制
  core.js:1449 ERROR SyntaxError: Unexpected token < in JSON at position 0
            at JSON.parse (<anonymous>)
            at Response.Body.json (http.js:1091)
            at MapSubscriber.project (home.ts:97)
            at MapSubscriber._next (map.js:79)
            at MapSubscriber.Subscriber.next (Subscriber.js:93)
            at XMLHttpRequest.onLoad (http.js:1591)
            at t.invokeTask (polyfills.js:3)
            at Object.onInvokeTask (core.js:4751)
            at t.invokeTask (polyfills.js:3)
            at r.runTask (polyfills.js:3)
EN

回答 1

Stack Overflow用户

发布于 2018-07-02 12:46:19

这意味着您正在尝试解析不是有效的json格式的数据(例如,在开始时它有一个<而不是{ )。

在你的home.ts

代码语言:javascript
运行
复制
...
this.http.post('http://localhost/shashank/login.php',data,options)
      .map(res => res.json())
      .subscribe(res => {
      console.log(res)
...

这个请求很可能不返回有效的json,当它试图用res.json()解析它时,它会返回这个错误。

现在,在您的login.php中,您需要检查它是否返回有效json

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51136027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档