Php 验证电子邮件并在Lumen Controller中返回JSON

Php 验证电子邮件并在Lumen Controller中返回JSON,php,ajax,lumen,Php,Ajax,Lumen,我正试图在一个使用Lumen构建的小应用程序中,使用PHPFILTER\u validate\u email验证电子邮件地址 提交表单时,如果我在valid\u email中硬编码电子邮件地址,我会发送一个AJAX GET请求,然后使用newsletteController.php中的代码进行验证email@email.com“)然后验证工作,我无法通过带有变量$email的表单传递电子邮件地址 我如何才能使过滤\u验证\u电子邮件正常工作并返回相应的响应 NewsletterControlle

我正试图在一个使用Lumen构建的小应用程序中,使用PHP
FILTER\u validate\u email
验证电子邮件地址

提交表单时,如果我在
valid\u email中硬编码电子邮件地址,我会发送一个AJAX GET请求,然后使用newsletteController.php中的代码进行验证email@email.com“)
然后验证工作,我无法通过带有变量
$email
的表单传递电子邮件地址

我如何才能使
过滤\u验证\u电子邮件
正常工作并返回相应的响应

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');
通过jQuery调用AJAX

$(".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" );
    });            
});
形式


我看到您没有向该控制器发送电子邮件输入

解决方案1:

$.get//应通过查询字符串发送电子邮件。
$request->input('email');->更改为$request->query('email')

解决方案2:

$.get->$.post,也为其设置请求输入电子邮件
将路由方法更改为post


还有一点,您可以先在没有ajax的情况下进行测试(通过表单提交),然后在完成基本过程后应用jquery。

谢谢。我怀疑这可能是因为我没有正确地传递电子邮件输入。我对Lumen和PHP一般都是新手。我更新了我的问题,对
newsletterController.php
进行了编辑,如果我将电子邮件地址硬编码为
valid\u email()
的参数,它会按预期工作,我会得到“valid”或“invalid”,因此我认为这证实了我没有正确传递电子邮件值。知道我做错了什么吗?我感谢你的帮助!你能试试解决方案1吗?将JS代码上的“新闻稿/订阅”更改为“新闻稿/订阅”email=“+$('input[type=email]”).val(),并按照我前面提到的Lumen controller方法的更改。现在我将
“新闻稿/订阅”email=“+$('input[type=email]”).val()
添加到AJAX中,我得到了“电子邮件有效”的回复,谢谢!我现在在Lumen文档中有很多阅读。。。
<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>