Форма контакта AJAX в CodeCigniter
-
25-09-2019 - |
Вопрос
Несколько вопросов:
Я использую CI и jQuery ajax.
В моем коде ниже я собираю dataString
, который по умолчанию добавляется к URL в качестве строки запроса.
Я изменил AJAX «тип», чтобы опубликовать, поэтому мой вопрос - как я могу получить доступ dataString
В моем приложении CI?
Казалось бы, я все еще должен использовать
$name=$this->input->post('name')
Кого мне делает настройку dataString
избыточный?
--
Я попробовал поиск, но не могу найти ничего конкретного.
Можно ли все еще использовать библиотеку проверки CIS и AJAX?
if($this->form_validation->run() == FALSE)
{
// what can i return so that my CI app shows errors?
}
Обычно вы перезагрузите контактную форму или перенаправьте пользователя. В идеальном мире я хотел бы, чтобы сообщения об ошибках будут показаны пользователю.
Jquery:
$(document).ready(function($){
$("#submit_btn").click(function(){
var name = $("input#name").val();
var company = $("input#company").val();
var email = $("input#email").val();
var phone = $("input#phone").val();
var message = $("textarea#message").val();
var dataString = 'name=' + name + '&message=' + message + '&return_email=' + email + '&return_phone=' +
phone + '&company=' + company;
var response = $.ajax({
type: "POST",
url: "newsite/contact_ajax/",
data: dataString
}).responseText;
//$('#contact').hide();
//$('#contact').html('<h5>Form submitted! Thank you!</h5><h4>We will be in touch with you soon.</h4>');
//$('#contact').fadeIn('slow');
return false;
});
});
Надеюсь, я был достаточно ясен - если у кого-то приличный пример контактной формы CI, которая была бы отличной. В интернете есть смешанные вещи, но ничего не попадают на все коробки.
Спасибо
Решение
Как я писал в комментариях, вам не нужно устанавливать dataString
Поскольку jQuery может сделать это для вас:
$(document).ready(function($){
$("#submit_btn").click(function(){
var response = $.ajax({
type: "POST",
url: "newsite/contact_ajax/",
data: $(your_form_id).serialize()
}).responseText;
//$('#contact').hide();
//$('#contact').html('<h5>Form submitted! Thank you!</h5><h4>We will be in touch with you soon.</h4>');
//$('#contact').fadeIn('slow');
return false;
});
});
Другие советы
Если вы используете jQuery $ .post () Функция, вы можете явно назвать переменные пост, а затем получить доступ к ним в своем контроллере, как вы предложили в вашем вопросе.
$.post("<?php echo site_url("newsite/contact_ajax/";?>",
{my_name:name,my_company:company,my_email:email,my_phone:phone,my_message:message},
function(){
//callback function
},
html
);
В вашем контроллере:
$this->input->post('my_name');
$this->input->post('my_company');
//etc