سؤال

بعض الأسئلة:

أنا أستخدم CI و JQuery Ajax.

في الكود الخاص بي أدناه ، أتجمع dataString, ، والتي يتم إلحاقها بشكل افتراضي بعنوان URL كسلسلة استعلام.

لقد غيرت "نوع" Ajax للنشر ، لذا فإن سؤالي هو - كيف يمكنني الوصول dataString في تطبيق CI الخاص بي؟

يبدو أنه لا يزال يتعين علي استخدام

$name=$this->input->post('name')

الذي يجعل الإعداد بالنسبة لي dataString متكرر؟

--

لقد حاولت البحث ولكن لا يمكنني العثور على أي شيء ملموس.

هل سيكون من الممكن الاستفادة من مكتبة التحقق من صحة رابطة الدول المستقلة وأجاكس؟

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top