Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
160 views
in Technique[技术] by (71.8m points)

javascript - Ajax:一个Ajax请求另一种形式(Ajax : one ajax request for another forms)

I have 3 contact form in one page (header, page, footer).

(我在一页(页眉,页,页脚)中有3个联系表单。)

How i can create one ajax request for all form ?

(我如何为所有表单创建一个Ajax请求?)

I want when user click each one form send data fron only this form.

(我想当用户单击每个表单时仅从该表单发送数据。)

Just now send from all forms.

(刚从各种形式发送。)

I used hasClass for determining from which class sending data, but i can't it

(我用hasClass确定从哪个类发送数据,但是我不能)

HTML:

(HTML:)

<form id="contact-form1" method="POST" class="d-flex form">
    <input type="text" class="simple-input" id="name" placeholder="Name">
    <input type="text" class="simple-input" id="email" placeholder="Email address">
    <textarea class="quession-input" id="msg" placeholder="Your question"></textarea>
    <div class="checkboks custom-sq">
        <input type="checkbox" class="checked-checkbox" name="myCheckboxes[]" id="box1" checked="checked" value="true" />
        <label for="box1" class="checkboks-text"><?php echo the_field('checkbox_text', 'option'); ?></label>
    </div>
    <button type="submit" id="submit" class="danger-btn submit1"><?php echo the_field('btn_send', 'option'); ?></button>
</form>

<form id="contact-form" method="POST" class="d-flex form">
    <input type="text" class="simple-input" id="hy_name" placeholder="Name">
    <input type="text" class="simple-input" id="hy_email" placeholder="Email address">
    <textarea class="quession-input" id="hy_msg" placeholder="Your question"></textarea>
    <div class="checkboks custom-sq">
        <input type="checkbox" id="box3" class="checked-checkbox" checked="checked" />
        <label for="box3" class="checkboks-text"><?php echo the_field('checkbox_text', 'option'); ?></label>
    </div>
    <button type="submit" id="submit" class="danger-btn hy-submit submit2"><?php echo the_field('btn_send', 'option'); ?></button>
</form>

Ajax:

(阿贾克斯:)

jQuery('.submit, .hy-submit').on('click', function(e) {
    e.preventDefault();
    // All data from form
    var str = $(this).closest('form').serialize();

    // Get current page url
    var page_url = window.location.toString();

    // Vars
    var name = jQuery('#name').val();
    var hy_name = jQuery('#hy_name').val();
    var email = jQuery('#email').val();
    var hy_email = jQuery('#hy_email').val();
    var msg = jQuery('#msg').val();
    var hy_msg = jQuery('#hy_msg').val();
    var subj = jQuery('#subj').val();


var obj=$(this);

if($(obj).hasClass('hy-submit')){
    validatehyEmail(hy_email);
    if (hy_msg == '' || hy_email == '' || validatehyEmail(jQuery('#hy_email').val()) == false) {
        validatehyEmail(hy_email);
        validateText(jQuery('#hy_msg'));
        validateText(jQuery('#hy_name'));
        return false;
    }
    console.log('submit');
   } else if ($(obj).hasClass('submit')) {
        validateEmail(email);
        if (msg == '' || email == '' || validateEmail(jQuery('#email').val()) == false) {
            validateEmail(email);
            validateText(jQuery('#msg'));
            validateText(jQuery('#name'));
            return false;
        }
        console.log('submit');
   }
    // Get checkbox value
    var chkElem = document.getElementsByName("myCheckboxes[]");
    var choice ="";

    for(var i=0; i< chkElem.length; i++)
    {
        if(chkElem[i].checked)
            choice = choice + chkElem[i].value;
    }

    jQuery.ajax({
        type: "post",
        url: ajaxactionurl,
        data: "action=send_email&" + str + "&myCheckboxes=" + choice + "&url=" + page_url,
        success: function (response) {
            jQuery('#contact-form input').val('');
            jQuery('#contact-form textarea').val('');
            jQuery('.submit').text('Done!');
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus);
        }
    });

});

PHP:

(PHP:)

add_action('wp_ajax_nopriv_send_email', 'send_email');
add_action('wp_ajax_send_email', 'send_email');
function send_email() {

    $checkbox = $_POST['myCheckboxes'];
    if (isset($checkbox)) {
        echo $checkbox;
    }
    $headers = 'Content-Type: text/html; charset="utf-8"';
    $name = $_POST['name'];
    $url = $_POST['url'];
    $hy_name = $_POST['hy_name'];
    $from = '[email protected]';
    $to = '[email protected]';
    $email = $_POST['email'];
    $hy_email = $_POST['hy_email'];
    $msg = $_POST['msg'];
    $hy_msg = $_POST['hy_msg'];
    $subject = 'Footer form: ' . $_POST['email'];
    $message .= (!empty($name)) ?  '<p><strong>User Name</strong> : ' . $name .'  </p>' : '';
    $message .= (!empty($email)) ?  '<p><strong>User Email</strong> : '. $email .'</p>' : '';
    $message .= (!empty($msg)) ?  '<p><strong>User Message</strong> : '.$msg .'</p>' : '';
    $message .= (!empty($checkbox)) ?  '<p><strong>Checkboxs</strong> : '.$checkbox .'</p>' : '';
    $message .= (!empty($url)) ?  '<p><strong>Url:</strong> : '.$url .'</p>' : '';

    $message .= (!empty($hy_name)) ?  '<p><strong>User Name</strong> : '.$hy_name .'</p>' : '';
    $message .= (!empty($hy_email)) ?  '<p><strong>User Email</strong> : '.$hy_email .'</p>' : '';
    $message .= (!empty($hy_msg)) ?  '<p><strong>User Message</strong> : '.$hy_msg .'</p>' : '';
    $message .= '</body></html>';
    echo mail($to, $subject, $message, $headers);
    return  $msg;
    die();
}
  ask by Bavarius translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

使用表单id属性并使用preventDefault方法来阻止表单提交。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...