Я пытаюсь проверить электронную почту с помощью контроллера lumen. Если адрес электронной почты введен правильно, он должен отображаться как «действительный», но в текущем состоянии он всегда «недействителен», даже если введены правильные адреса электронной почты.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class NewsletterController extends Controller
{
public function subscribe(Request $request)
{
$email = $request->query('email');
echo $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"]);
}
}
}
AJAX-вызов через jQuery
function msg() {
var email = document.getElementById("email").value;
console.info(email);
var email2 = $('input[type=email]').val();
console.info(email2);
event.preventDefault();
$.get("newsletter/subscribe?email + $('input[type=email]').val()", function(data, status){
console.info("data: " + data + "\nStatus: " + status);
})
.done(function() {
//console.info( "done" );
alert("DONE");
})
.fail(function() {
console.info( "error" );
alert("Fail");
})
.always(function() {
//console.info( "finished" );
alert("hz");
});
};
Форма
<form class = "join-newsletter">
<input id = "email" name = "email" type = "email" placeholder = "Enter your email address" class = "email-address">
<input onclick = "msg()" type = "submit" value = "Subscribe" class = "submit-email button">
</form>
Обновленный код: по-прежнему отображаются данные: недействительные.






Я полагаю, ваш запрос ajax можно изменить на.
$.get("/newsletter/subscribe?email = "+ $('#email').val()
Возможная проблема заключается в том, что вы неправильно отправляете значение email на свой контроллер.
Привет! теперь он все еще выдает данные: недействительные. На самом деле я основал этот код на вашей старой теме.
/public/?email=# выходит.
Это должен быть $.get("newsletter/subscribe?email = " + $('#email').val(), function(data, status){
Эй, когда я добавляю этот бит в свой код. это вообще не работает. просто выплевывает. .fail(function()
Пожалуйста, проверьте ответ Ajax, а также обновите определение маршрута.
$app->get('newsletter/subscribe', 'NewsletterController@subscribe'); мой ответ route.php ajax кажется нормальным, хм. я что-то упускаю...
Что выдает YOUR_URL/newsletter/[email protected]? (Измените YOUR_URL на правильное значение)
выходит как [email protected]["valid"]
Эй, попробуйте $.get("/newsletter/subscribe?email = " + $('#email').val(), function(data, status){, сосредоточьтесь на / перед newsletter и проверьте консоль браузера, чтобы увидеть, что вы вызываете указанный выше URL-адрес, который вернул [email protected]["valid"].
добавление URL-адреса косой черты происходит неправильно - myurl/newsletter/[email protected] должен быть myurl/public/newsletter/[email protected]m
Удалите echo $email; в своем действии, пожалуйста
Каково ваше определение маршрута?