2017-02-25 88 views
2

我想在php出現驗證錯誤時通知用戶。我使用laravel 5.3創建表單和Ajax以獲取錯誤消息。Ajax在console.log上返回undefined(錯誤) - php服務器端驗證

這裏是我的JavaScript代碼

$.ajax({ 
    url: '/artistPost', 
    type:'POST', 
    data: { 
     _token: Artisttoken, 
     Name: Name, 
     Phone: Phone, 
    }, 

    error:function (data, response, xhr, status, error) { 
     var errors = data.responseJSON; 
     console.log(errors); 
    } 

這是我在的鍍鉻deveper工具

<?php{"name":["The name field is required."],"phone":["The phone field is required."]} 

和網絡部分我看到這是我在控制檯中我看到enter image description here

更新

這是從控制器

public function create(ArtistRequest $request){ 

    dd($request->all()); 


    return redirect()->back(); 
} 
+0

這是您的所有php代碼爲artistPost?還是輸出? – Theo

+0

當我點擊保存時它的輸出 –

+0

我們可以看到生成該輸出的代碼嗎? – Theo

回答

1

您的服務器不應該發送<?php作爲它的響應部分 - 這要麼表明服務器沒有解析文件作爲PHP,或者你有某種呼應一個<?php標籤。

這個職位似乎是解決一個非常類似的問題:

https://laracasts.com/discuss/channels/general-discussion/php-tag-in-ajax-response?page=1

看特別是在這樣的響應:

RouteServiceProvider.php包含:

public function map(Router $router) { $router->group(['namespace' => $this->namespace], function ($router) { foreach (File::allFiles(app_path('Http/Routes')) as $partial) { require_once($partial->getPathname()); } }); }

路由文件之一除了<?php標籤和沒有新的線目前沒有什麼在上面的方法加載。沒有新的路線是問題所在。爲該文件添加了評論,並且所有作品都完美無缺。我不知道爲什麼這是生產服務器上比本地更多的問題。 PHP版本都是5.6。

0

你應該從控制器返回一個json輸出。例如:

return Response::json(['message'=> 'Your message', 'status'=> 'success'], 200); 

您應該有一個if/else,以便您可以捕獲成功和錯誤。