0

私はjqueryを初めて使用しますが、その概念にまだ非常に混乱しています。

新しいメンバーを登録するためのphpMySQLスクリプトがあります。ページをリロードせずに完成したフォームをアップロードできるようにするAJAXスクリプトを導入しました。

以下にコードを同封しました。問題は、私がこのメッセージを受け取り続けることです:

**> There was an SyntaxError: JSON.parse: unexpected character error due
> to a parsererror condition.**

誰かがそれが何を意味するのか教えてもらえますか、私は私のコードを調べましたが、それで何か問題を見つけることができないようです。

    $('form #response').hide();

$('#submit').click(function(e) {

    // prevent forms default action until
    // error check has been performed
    e.preventDefault();

    // grab form field values
    var valid = '';
    var required = ' is required.';
    var name = $('form #name').val();
    var email = $('form #email').val();
    var cat = $('form #cat option:selected').val();
    var location = $('form #country_loc option:selected').val();
    var honeypot = $('form #honeypot').val();
    var humancheck = $('form #humancheck').val();

    // perform error checking
    if (name = '' || name.length <= 2   ||  name == 'name*'   ) {
        valid = '<p>Your name' + required +'</p>';  
    }

    if (!email.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
        valid += '<p>Your email' + required   +'</p>';                                                
    }

    if (cat = '' || cat.length < 1) {
        valid += '<p>Please tell us whether you are;  seeking work or  looking for a careworker' + required + '</p>';   
    }


if (location = '' || location.length < 1) {
        valid += '<p>Please tell us your current location' + required + '</p>'; 
    }



    if (honeypot != 'http://') {
        valid += '<p>Spambots are not allowed.</p>';    
    }

    if (humancheck != '') {
        valid += '<p>A human user' + required + '</p>'; 
    }

    // let the user know if there are erros with the form
    if (valid != '') {

        $('form #response').removeClass().addClass('error')
            .html('<strong>Please correct the errors below.</strong>' +valid).fadeIn('fast')            

        .html('<strong>the category is '+ cat     +  '.</strong>' +valid).fadeIn('fast');






    }
    // let the user know something is happening behind the scenes
    // serialize the form data and send to our ajax function
    else {

        $('form #response').removeClass().addClass('processing').html('Processing...').fadeIn('fast');                                      

        var formData = $('form').serialize();
        submitForm(formData);           
    }           

});


//END THE FUNCTION FOR THE SUBMISSION OF REGISTATION FORM TO THE DATABASE VIA AJAX 



// make our ajax request to the server
function submitForm(formData) {

    $.ajax({    
        type: 'POST',

        url: 'cms/index.php?view=joint_reg',        
        data: formData,
        dataType: 'json',
        cache: false,
        timeout: 7000,
        success: function(data) {           

            $('form #response').removeClass().addClass((data.error === true) ? 'error' : 'success')
                        .html(data.msg).fadeIn('fast'); 

            if ($('form #response').hasClass('success')) {

                setTimeout("$('form #response').fadeOut('fast')", 5000);
            }

        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {

            $('form #response').removeClass().addClass('error')
                        .html('<p>There was an<strong> ' + errorThrown +
                              '</strong> error due to a<strong> ' + textStatus +
                              '</strong> condition.</p>').fadeIn('fast');           
        },              
        complete: function(XMLHttpRequest, status) {            

            $('form')[0].reset();
        }
    }); 
};

みなさん、ありがとうございました。私はjqueryが大好きで、本当に学びたいです。

4

1 に答える 1

0

$('form').serialize() 文字列を返します (例: formData は "name=abc&email=abc@bla.com... ")

data オプションはオブジェクトでなければならないため、例外がスローされます

あなたが試すことができます

$.ajax({    

     url: 'cms/index.php?view=joint_reg&' + formData,      

});

それが役立つことを願っています:)

下手な英語でごめんなさい

于 2012-08-23T12:39:58.113 に答える