2016-03-30 2 views
1

Я пытаюсь использовать угловой 2.0, чтобы добавить нового героя через свой PHP Laravel API, и я всегда получаю 500 ответов на внутренний сервер.AngularJS 2.0 http.post возвращает 500 (Внутренняя ошибка сервера)

Мой API (Laravel): Создание нового героя по маршруту:

Route::group(array('prefix' => 'api/v1', 'middleware' => ['web']), function() 
    { 
    //Add a new hero 
    Route::post('/heroes/create', '[email protected]'); 
    }); 

HeroController @ магазин метод: (протестирована и работает с формой Laravel)

/** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(Request $request) 
    { 

     $hero = new Hero; 
     $hero->name = $request->name; 
     $hero->description = $request->description; 
     $hero->avatar = "None"; 
     $hero->save(); 

     $heroes = Hero::paginate(5); 
     return view('/heroes/index', [ 
     'heroes' => $heroes 
    ]); 
    } 

Угловая onSubmit () Метод: (попытка заставить его работать без формы ..)

onSubmit(value: string): void { 
     let headers = new Headers(); 
    headers.append('Content-type', 'application/x-www-form-urlencoded'); 

    let formPayload = new URLSearchParams(); 
    formPayload.set('name', name.value); 
    formPayload.set('description', desc.value); 
    formPayload.set('_token', _token.value); 

    this.http.post('http://127.0.0.1/heroWorld/public/api/v1/heroes/create', 
         JSON.stringify({name:'Joe',description:'wonder', _token:'knUS8vUxihTj4YJhjVkqmRBJJkVDDCABIZaRwXhN'}), 
         {headers:headers}) 
.map((res: Response) => res.json()) 
.subscribe(
     data => { this.heroes = data; 
     }, 
     err => console.error(err), 
     () => console.log('done'); 
    ); 

Что я получаю:

POST http://127.0.0.1/heroWorld/public/api/v1/heroes/create 500 (Internal Server Error) 

Что случилось? Я пытаюсь исправить это в течение нескольких дней, ничего не работает.

ответ

1

Вы создаете данные формы, используя класс URLSearchParams, но вы используете другой объект в методе post. Вы можете попробовать следующее вместо:

let formPayload = new URLSearchParams(); 
formPayload.set('name', name.value); 
formPayload.set('description', desc.value); 
formPayload.set('_token', _token.value); 

this.http.post('http://127.0.0.1/heroWorld/public/api/v1/heroes/create', 
        formPayload.toString(), // <------ 
        {headers:headers}) 
+0

Я сделал это только для целей тестирования, в обоих случаях я получаю 500 (Внутренняя ошибка сервера) – TheUnreal

+0

У вас есть соответствующая ошибка на стороне сервера? –

+0

У меня есть laravel «Добавить героя», который отправляет данные в мой метод store(), и он работает (как я упоминал в своем сообщении). Кажется, я не встречаюсь с приложением anulgar. – TheUnreal

Смежные вопросы