在 Lumen 控制器中验证电子邮件和 return JSON
Validate email and return JSON in Lumen Controller
我正在尝试在使用 Lumen 构建的小应用程序中使用 PHP FILTER_VALIDATE_EMAIL
验证电子邮件地址。
我在提交表单时发送一个 AJAX GET 请求,然后应该使用 newsletterController.php 中的代码进行验证,如果我在 valid_email('email@email.com')
中硬编码电子邮件地址,则验证有效,我无法通过变量 $email
.
传递表单中的电子邮件地址
如何让 FILTER_VALIDATE_EMAIL
正常工作并 return 得到适当的响应?
NewsletterController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class NewsletterController extends Controller
{
public function subscribe(Request $request)
{
$email = $request->input('email');
function valid_email($email) {
return !!filter_var($email, FILTER_VALIDATE_EMAIL);
}
if( valid_email($email) ) {
return response()->json(["valid"]);
} else {
return response()->json(["invalid"]);
}
}
}
routes.php
$app->get('newsletter/subscribe', 'NewsletterController@subscribe');
AJAX 通过 jQuery
调用
$(".submit-email").click(function( event ){
event.preventDefault();
$.get("newsletter/subscribe", function(data, status){
console.log("data: " + data + "\nStatus: " + status);
})
.done(function() {
//console.log( "done" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
//console.log( "finished" );
});
});
表格
<form class="join-newsletter">
<input name="email" type="email" placeholder="Enter your email address" class="email-address">
<input type="submit" value="Subscribe" class="submit-email button">
</form>
我看到你没有将电子邮件输入发送到那个控制器。
解决方案 1:
$.get // should send the email via query string.
$request->input('email'); -> change to $request->query('email');
解决方案 2:
$.get -> $.post, set the request input email for it also
Change the route method to post
还有一点,您可以先不使用 ajax 进行测试(通过表单提交),然后在完成基本过程后应用 jquery。
我正在尝试在使用 Lumen 构建的小应用程序中使用 PHP FILTER_VALIDATE_EMAIL
验证电子邮件地址。
我在提交表单时发送一个 AJAX GET 请求,然后应该使用 newsletterController.php 中的代码进行验证,如果我在 valid_email('email@email.com')
中硬编码电子邮件地址,则验证有效,我无法通过变量 $email
.
如何让 FILTER_VALIDATE_EMAIL
正常工作并 return 得到适当的响应?
NewsletterController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class NewsletterController extends Controller
{
public function subscribe(Request $request)
{
$email = $request->input('email');
function valid_email($email) {
return !!filter_var($email, FILTER_VALIDATE_EMAIL);
}
if( valid_email($email) ) {
return response()->json(["valid"]);
} else {
return response()->json(["invalid"]);
}
}
}
routes.php
$app->get('newsletter/subscribe', 'NewsletterController@subscribe');
AJAX 通过 jQuery
调用$(".submit-email").click(function( event ){
event.preventDefault();
$.get("newsletter/subscribe", function(data, status){
console.log("data: " + data + "\nStatus: " + status);
})
.done(function() {
//console.log( "done" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
//console.log( "finished" );
});
});
表格
<form class="join-newsletter">
<input name="email" type="email" placeholder="Enter your email address" class="email-address">
<input type="submit" value="Subscribe" class="submit-email button">
</form>
我看到你没有将电子邮件输入发送到那个控制器。
解决方案 1:
$.get // should send the email via query string.
$request->input('email'); -> change to $request->query('email');
解决方案 2:
$.get -> $.post, set the request input email for it also
Change the route method to post
还有一点,您可以先不使用 ajax 进行测试(通过表单提交),然后在完成基本过程后应用 jquery。