0

次のコード スニペットは、フォームが正しく入力されているにもかかわらず、「失敗」アラート ボックスを返します。「合格」アラート ボックスを表示したいと思います。確かに何かが間違っているのですが、どこにあるのかわかりません...

完全なコードはこちら: http://alessandrosantese.com/Forms/Custom_Validation/Form-Validation-Plugin-AJAX.html

    submit.click(function(evt) {  
        evt.preventDefault();

        validate_form();

        $('form input:not(.submit, .email, .test)').each(function(){
            if ($(this).val() == '') {
                add_color($(this), red);
            }
            else {
                add_color($(this), white);
            }

        });

        var data = form.serialize();

            // AJAX call
            $.ajax({
                url: 'process.php',
                type: "post",
                data: data,
                success: function(r){

                    if (r.success) {
                        alert('passed');
                    } else {
                        alert('failed');
                    }

                }
            });



    });

PHP コード (非常に基本的なもので、今のところ AJAX を成功させるためだけのものです)

<?php

    $name = $_POST['f_name'];
  $l_name = $_POST['l_name'];
  $email1 = $_POST['email'];
  $email2 = $_POST['email_c'];
     $tel = $_POST['tel'];
$postcode = $_POST['postcode'];
     $url = $_POST['url'];
     $checkbox = $_POST['checkbox'];

echo "\n$name\n$l_name\n$email1\n$email2\n$tel\n$postcode\n$url\n$checkbox";


?> 

validate_form(); であることを確認する方法を見つける必要があります。AJAX呼び出し自体の前に機能しました。

4

4 に答える 4

1

validate_form は何かを返しますか? その場合、関数の戻り値をvalidate_form()どこでもキャプチャできます。

validate_form()フォームが有効かどうかを示すブール値を返す必要があります。関数 - validateEmail()、のそれぞれで、それらのフィールドが有効かどうかに基づいてブール値を返しますcheckPostCode()checkURL()そして次のように書き直しvalidate_form()ます

function validate_form()
{ 
    return (validateEmail() && checkPostCode() && checkURL());
} 

私はあなたがこのようなものが欲しいと思います:

if(validate_form()) //if the form is valid
{
    $.ajax({
        url: 'process.php',
        type: "post",
        data: data,
        success: function(r){
            alert('passed')
            },
        error: function(r){
            alert('failed: ' + r.statusText);
    });
}
else
{
      alert('failed');
}
于 2013-04-02T16:29:21.500 に答える
0

JSON 文字列を返さないため、属性rを持つことはできません。.success単純な文字列を返しているので、やった方がいいかもしれません

if (r <> '') {
   alert('success');
} else {
   alert('failed');
}
于 2013-04-02T16:22:23.023 に答える
0

最善の解決策は、返したい情報を配列に格納することです。次に、エコーバックする前にjson_encode()を使用します。

AJAX スクリプトの PHP 部分を次のように変更します。

$return = array();
$return['name'] = $_POST['f_name'];
$return['l_name'] = $_POST['l_name'];
$return['email'] = $_POST['email'];
$return['email_c'] = $_POST['email_c'];
$return['tel'] = $_POST['tel'];
$return['postcode'] = $_POST['postcode'];
$return['url'] = $_POST['url'];
$return['checkbox'] = $_POST['checkbox'];
$return['success'] = true;

echo json_encode($return);

そして、それは情報を r.nameofparam の形式でアクセス可能な形式で jquery に送り返します...したがって、成功の値にアクセスすることができます

r.成功

またはurlの値

r.url

于 2013-04-02T16:27:38.910 に答える