簡體   English   中英

JSON中位置Ionic處的意外令牌<

[英]Unexpected token < in JSON at position Ionic

我正在使用Ionic 2框架進行項目開發,但是每當我向MySQL數據庫提交表單輸入時,都會在位置0 home.ts:37的JSON中收到意外令牌<的錯誤。 我檢查了端口,一切正常。 是什么原因引起的?

完全錯誤

SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at Response.Body.json (http.es5.js:800)
    at MapSubscriber.project (service.ts:28)
    at MapSubscriber._next (map.js:77)
    at MapSubscriber.Subscriber.next (Subscriber.js:89)
    at XMLHttpRequest.onLoad (http.es5.js:1229)
    at t.invokeTask (polyfills.js:3)
    at Object.onInvokeTask (core.es5.js:4119)
    at t.invokeTask (polyfills.js:3)
    at r.runTask (polyfills.js:3)

launch.json

    {

    "version": "0.2.0",
    "configurations": [

        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}",
            "outFiles": [
                "${workspaceRoot}/out/**/*.js"
            ]
        }
    ]
}

這是我的代碼:

home.html的

<ion-header>
  <ion-navbar>
    <ion-title>
      Agregar producto
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <form [formGroup]="insertar" (ngSubmit)="InsertarProducto()">
            <ion-list>
                  <ion-item>
                        <ion-label floating>nombre</ion-label>
                        <ion-input type="text" name="nombre" formControlName="nombre" ></ion-input>
                  </ion-item>
                  <ion-item>
                        <ion-label floating>stock</ion-label>
                        <ion-input type="text" name="stock" formControlName="stock" ></ion-input>
                  </ion-item>
                      <button  [disabled]="insertar.invalid" ion-button full block color="secondary">Enviar</button>
            </ion-list>
  </form>

</ion-content>

home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { ServiceProvider } from '../../providers/service/service';
import { FormBuilder, Validators } from '@angular/forms';
import { ToastController } from 'ionic-angular';


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

  insertar : any = {};

  constructor(public navCtrl: NavController , public service : ServiceProvider, public formB : FormBuilder,  public toastCtrl: ToastController) 
  {

            this.insertar = this.formB.group({
             nombre:['', Validators.required],
             stock:['', Validators.required] 
            });
   }



   InsertarProducto(){

      /*let toast = this.toastCtrl.create({
      message: 'Usuario agregado correctamente',
      duration: 3000
    });*/

    this.service.InsertarProd(this.insertar.value)
    .subscribe(
      data=> console.log(data.mensage), //toast.present()
      err=> console.log(err));
  }




}

service.ts

import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { Http , Headers, Response} from '@angular/http';
//import { Observable } from "rxjs/Observable";


/*
  Generated class for the ServiceProvider provider.

  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
  for more info on providers and Angular 2 DI.
*/
@Injectable()
export class ServiceProvider {

    api : string = 'http://localhost:8080/ING/';

  constructor(public http: Http) {
    console.log('Hello ServiceProvider Provider');
  }

   InsertarProd(params){
             let headers = new Headers({'Content-Type':'application/x-www-form-urlencoded'});
           return this.http.post(this.api + 'insertarprod.php' , params,{ 
           headers:headers,
           method:"POST",
         }).map(
           (res:Response)=>{return res.json();}
         )
  }


}

insertarprod.php

<?php

header("Access-Control-Allow-Origin:http://localhost:8100");
header("Content-Type: application/x-www-form-urlencoded");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

    $data = file_get_contents("php://input");
    $objData = json_decode($data);



    $nombre = $objData->nombre;
    $stock = $objData->stock;


    $nombre = stripslashes($nombre);
    $stock = stripslashes($stock);

    $nombre = trim($nombre);
    $stock = trim($stock);

    $datos; 

    @$db = new PDO("mysql:host=localhost;dbname=aula", "root", "");


    $prueba = array('mensaje2' => "conexion correcta");
    echo json_encode($prueba);

    if($db){
        $sql = " insert into productos values(NULL,'".$nombre."','".$stock."')";
        $query = $db->prepare($sql);
        $query ->execute();
        if(!$query){
                   $datos = array('mensage' => "no fue posible insertar datos");
                   echo json_encode($datos);
         }
        else{
                   $datos = array('mensage' => "Datos ingresados correctamente");
                  echo json_encode($datos);
         };
    }
   else{
          $datos = array('mensage' => "No es posible insertar datos.");
          echo json_encode($datos);
    };

    ?>

將您的JSON復制/粘貼到驗證器中,如下所示: https : //jsonformatter.curiousconcept.com/

如果仍然找不到它,請在問題中與我們共享JSON。

除注釋外,您的json有效: https : //jsonlint.com/請參閱: 注釋可以在JSON中使用嗎? 關於json文件中的注釋。

由於某些原因,我在3307的XAMPP SQL端口導致了該錯誤。 我將其更改回3306,並且我的代碼可以處理0個JSON錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM