Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Выходит ошибка что MethodNotAllowedHttpException
вот код
форма
{{Form::open(array('id'=>'frm'))}}
<label class="h6">Имя / Фамилия</label>
<input type="text" name="name" required="required" class="form-control">
<label class="h6">E-mail</label>
<input type="email" name="email" required="required" class="form-control">
<label class="h6">Сообщение</label>
<textarea rows="7" name="message" required="required" class="form-control"></textarea><br />
<button type="submit" class="btn btn-primary" ><span class="fui-mail"></span></button>
{{Form::close()}}
<script>
$("document").ready(function(){
$("#frm").submit(function(e){
e.preventDefault();
var name = $("input[name=name]").val();
var email = $("input[name=email]").val();
var message = $("textarea[name=message]").val();
var dataString = 'name='+name+'&email='+email+'&message'+message;
$.ajax({
type: "POST",
url : "http://example.com/contact",
data : dataString,
dataType : "json",
success : function(msg){
if (msg == 'ok'){
sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
}else {
sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
}
}
},"json");
});
});
</script>
Route::post('/contact', function(){
if (Request::ajax()){
$user = array(
'email' => Input::get('email')
);
$data = array(
'name' => Input::get('name'),
'email' => Input::get('email'),
'message_body' => Input::get('message')
);
$rules = array(
'name' => 'required|max:50',
'email' => 'required|email',
'message_body' => 'required|min:6',
);
$validation = Validator::make($data, $rules);
if ($validation->fails())
{
return Redirect::to('/about')->withErrors($validation)->withInput();
}
Mail::send('emails.contact', $data, function($message) use ($user) {
$message->to('test@example.com', 'RS Staff')->subject('Новое сообщение ');
});
return Response::json(array('msg' => 'ok'));
}
});
может где не так сделал по советуйте что делать и посмотрите со стороны виднее будет если где то что не так
Не в сети
Не в сети
}%method="post" на форме забыл?
разве не автоматом ?
Не в сети
вечно выдает что ошибка с js возвращает не msg == true
{{Form::open(array('id' => 'frm', 'method' => 'post' ))}}
<div class="form-group">
{{ Form::email('email', null, array('class' => 'form-control',"placeholder" => "Your E-mail")) }}
</div>
<div class="form-group">
<div>
{{ Form::password('password', array('class' => 'form-control', "placeholder" => "Password")) }}
<br />
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-block btn-warning btn-embossed">Sign Up</button>
</div>
{{Form::close()}}
$("document").ready(function(){
$("#frm").submit(function(e){
e.preventDefault();
var query = "email=" + $("input[name=email]").val() +
"&password=" + $("input[name=password]").val();
$.ajax({
type: "POST",
url : "http://localhost:8000/frontend/users/register",
data : query,
cache: false,
//dataType : "json",
success : function(msg){
if (msg == 'true'){
sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
}else {
sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
}
}
},"json");
});
});
public function postRegister() {
if(Request::ajax()){
$rules = User::$validation;
$validation = Validator::make(Input::all(), $rules);
if ($validation->fails()) {
return Response::json(array('msg'=> false,));
}
$user = new User();
$user->fill(Input::all());
$id = $user->register();
return Response::json(array('msg'=> true,));
}
}
в модели
public function register() {
$this->password = Hash::make($this->password);
$this->activationCode = $this->generateCode();
$this->save();
Log::info("User [{$this->email}] registered. Activation code: {$this->activationCode}");
$this->sendActivationMail();
return $this->id;
}
public function sendActivationMail() {
$activationUrl = action(
'UsersController@getActivate',
array(
'userId' => $this->id,
'activationCode' => $this->activationCode,
)
);
$that = $this;
Mail::send('emails/activation',
array('activationUrl' => $activationUrl),
function ($message) use($that) {
$message->to($that->email)->subject('Спасибо за регистрацию!');
}
);
}
Изменено nemocoder (07.04.2015 20:16:42)
Не в сети
Попробуйте так:
if (msg ){
sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
}else {
sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
}
Если не поможет - то смотрите, что приходит в msg, вначале success-функции добавьте:
console.log(msg);
И посмотрите, что в консоли выведется.
Не в сети
Попробуйте так:
if (msg ){ sweetAlert("Good job!", "Ваша заявка отправлена!", "success"); }else { sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error"); }
Если не поможет - то смотрите, что приходит в msg, вначале success-функции добавьте:
console.log(msg);
И посмотрите, что в консоли выведется.
возвращает false
я не пойму почему валидацию не проходит база пустая и все равно, может где ошибка есть я не вижу ?
Не в сети
решено!
if (msg ['msg'] == true){
sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
}else {
sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
}
Не в сети
if (msg ['msg'] == true)
Странно, если у Вас в консоли выводилось "false". Там должен был быть Array.
Изменено Дмитрий (08.04.2015 08:11:33)
Не в сети
вместо e.preventDefault() достаточно вернуть из обработчика false — это обеспечит и preventDefault и stopPropagation причём кроссбраузерно, не только для современных браузеров. вторая проблема — при таком способе формирования payload’а запроса не искейпится содержимое полей. учитывая что в обработчике форма приходит в виде this достаточно в качестве data передать $(this).serialize() — это и проще и правильнее, а главное в форме присутствует и csrf-токен, который тоже будет передан. cache: false на post-запросе не нужен — посты не кэшируются. и можно использовать $.post вместо общего $.ajax.
js$.post($(this).attr('action'), $(this).serialize(), function (responce) { ... }, 'json'); return false;
Не в сети
}%вместо %%e.preventDefault()%% достаточно вернуть из обработчика %%false%% - это обеспечит и %%preventDefault%% и %%stopPropagation%% причём кроссбраузерно, не только для современных браузеров. вторая проблема - при таком способе формирования payload'а запроса не искейпится содержимое полей. учитывая что в обработчике форма приходит в виде %%this%% достаточно в качестве %%data%% передать %%$(this).serialize()%% - это и проще и правильнее, а главное в форме присутствует и csrf-токен, который тоже будет передан. %%cache: false%% на post-запросе не нужен - посты не кэшируются. и можно использовать %%$.post%% вместо общего %%$.ajax%%.
%%(js)
$.post($(this).attr('action'), $(this).serialize(), function (responce) {
...
}, 'json');
return false;
%%как-то так
спасибо учту
Не в сети
Страницы 1