【问题标题】:Validate email and return JSON in Lumen Controller在 Lumen 控制器中验证电子邮件并返回 JSON
【发布时间】:2018-07-28 00:19:53
【问题描述】:

我正在尝试在使用 Lumen 构建的小应用程序中使用 PHP FILTER_VALIDATE_EMAIL 验证电子邮件地址。

我在提交表单时发送了一个 AJAX GET 请求,然后应该使用 newsletterController.php 中的代码进行验证,如果我在 valid_email('email@email.com') 中硬编码一个电子邮件地址,那么验证工作,我无法传递电子邮件地址来自带有变量$email 的表单。

我怎样才能让FILTER_VALIDATE_EMAIL 正常工作并返回适当的响应?

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" );
    });            
});

表格

<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>

【问题讨论】:

    标签: php ajax lumen


    【解决方案1】:

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

    解决方案 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 的新手。我通过编辑将我的问题更新为newsletterController.php,如果我将电子邮件地址硬编码为valid_email() 的参数,它会按预期工作并且我得到“有效”或“无效”,所以我认为这证实了我没有通过电子邮件值适当。知道我做错了什么吗?感谢您的帮助!
    • 你可以试试解决方案1吗?在 JS 代码中将“newsletter/subscribe”更改为“newsletter/subscribe?email=" + $('input[type=email]').val(),并按照我上面提到的 Lumen 控制器方法的更改。
    • 现在我将"newsletter/subscribe?email=" + $('input[type=email]').val() 添加到 AJAX 中,我收到了“电子邮件有效”的回复,谢谢!我现在有很多阅读 Lumen 文档的内容...
    猜你喜欢
    • 2016-12-27
    • 2012-09-10
    • 1970-01-01
    • 2020-12-23
    • 2018-04-19
    • 2013-08-21
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多