简体   繁体   English

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

[英]Unexpected token < in JSON at position Ionic

I'm working on a project using Ionic 2 framework, but I'm getting an error of Unexpected token < in JSON at position 0 home.ts:37, whenever I submit a form input into my MySQL database. 我正在使用Ionic 2框架进行项目开发,但是每当我向MySQL数据库提交表单输入时,都会在位置0 home.ts:37的JSON中收到意外令牌<的错误。 I have checked my ports, all working fine. 我检查了端口,一切正常。 What could be causing the issue? 是什么原因引起的?

full error 完全错误

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 launch.json

    {

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

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

Here's my code: 这是我的代码:

home.html 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 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 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 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);
    };

    ?>

Copy/paste your JSON into a validator, like this one: https://jsonformatter.curiousconcept.com/ 将您的JSON复制/粘贴到验证器中,如下所示: https : //jsonformatter.curiousconcept.com/

If you're still unable to find it, share the JSON with us in the question. 如果仍然找不到它,请在问题中与我们共享JSON。

Your json is valid except the comment: https://jsonlint.com/ See: Can comments be used in JSON? 除注释外,您的json有效: https : //jsonlint.com/请参阅: 注释可以在JSON中使用吗? about comments in json files. 关于json文件中的注释。

For some reason my XAMPP SQL port at 3307 was causing the error. 由于某些原因,我在3307的XAMPP SQL端口导致了该错误。 I changed it back to 3306 and my code worked with 0 JSON errors. 我将其更改回3306,并且我的代码可以处理0个JSON错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM