无法在prestashop上创建新帐户

时间:2014-04-30 12:47:11

标签: javascript jquery ajax json prestashop

我目前正在开发一个新网站

当我尝试创建帐户时,我收到如下错误:

Uncaught TypeError: Cannot read property 'hasError' of null. 

这是代码

function submitFunction()
    {
    $('#create_account_error').html('').hide();
    //send the ajax request to the server
    $.ajax({
        type: 'POST',
        url: baseUri,
        async: true,
        cache: false,
        dataType : "json",
        data: {
            controller: 'authentication',
            SubmitCreate: 1,
            ajax: true,
            email_create: $('#email_create').val(),
            back: $('input[name=back]').val(),
            token: token
        },
        success: function(jsonData)
        {
            if (jsonData.hasError())
            {
                var errors = '';
                for(error in jsonData.errors)
                    //IE6 bug fix
                    if(error != 'indexOf')
                        errors += '<li>'+jsonData.errors[error]+'</li>';
                $('#create_account_error').html('<ol>'+errors+'</ol>').show();
            }
            else
            {
                // adding a div to display a transition
                $('#center_column').html('<div id="noSlide">'+$('#center_column').html()+'</div>');
                $('#noSlide').fadeOut('slow', function(){
                    $('#noSlide').html(jsonData.page);
                    // update the state (when this file is called from AJAX you still need to update the state)
                    bindStateInputAndUpdate();
                    $(this).fadeIn('slow', function(){
                        document.location = '#account-creation';
                    });
                });
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert("TECHNICAL ERROR: unable to load form.\n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
        }
    });
}

它似乎是函数上的jsonData,它不能正常工作。有什么想法或建议吗?

1 个答案:

答案 0 :(得分:2)

成功处理程序将传递从ajax请求返回的数据。

它不会有一个名为hasError()的函数,因为它只是一个json对象,它没有任何函数。

如果存在http错误,即如果ajax调用返回http 500,则应触发错误处理程序。

我不熟悉prestashop,但查看prestashop documentation hasError会以bool(非函数)的形式返回,所以请尝试(不使用括号)。

if (jsonData.hasError)

您可能还想检查是否首先返回任何数据。

if (jsonData)