ajax表单提交多个值并获得响应

时间:2015-03-12 21:46:44

标签: php ajax

我正在使用表单并提交一个名字,姓氏,电子邮件,用户名作为字段的表单。当ajax返回时,它返回一串错误消息。如何分离错误消息? 我正在使用此代码

    $(document).ready(function(){        $(":button [value = Done]")。click(function(){             data_first_name = $("#first_name")。val();             data_last_name = $("#last_name")。val();             data_user_name = $(" #user_name")。val();             data_email = $(" #mail")。val();             data_role = $("#role")。val();             data_password = $(" #password")。val();             data_profile_image = $(" #upload_admin_image")。val();             $ .post(" process / process_add_user.php",{                 first_name:data_first_name,                 last_name:data_last_name,                 电子邮件:data_email,                 角色:data_role,                 密码:data_password,                 user_name:data_user_name,                 profile_image:data_profile_image             },             function(resp){                 $("#first_name_error&#34)的HTML(RESP)。             });         });     });

2 个答案:

答案 0 :(得分:0)

您可以使用response code。代码应该代表实际的错误。

  

当ajax返回时,它返回一串错误消息。如何分离错误消息?

您可以将错误消息集合作为JSON字符串发送,并在错误处理函数中根据需要处理这些错误。

如果出现错误:

<?php
http_response_code(400);
// maps a form field to an error message.
$a = array('username' => 'no username', 'email' => 'no email');
echo json_encode($a);

在正常情况下:

<?php
http_response_code(200);
echo "Success message";

当您可以为各个状态代码设置事件处理程序,甚至仅successfail回调时,此方案适用于许多ajax库。

jQuery的一个例子:

$.ajax({
  statusCode: {
    400: function(jqXHR, textStatus, errorThrown) {
        var errors = JSON.parse(errorThrown);
        if (errors.username) {
            $('#username-error').text(errors.username);
        }
    },
    200: function(data) {
        // ...
    }
  }
});

使用vanilla JavaScript的示例:

var handlers = {
   400: function (responseText) {
       var errors = JSON.parse(responseText);
       if (errors.username) {
           var name_error = document.querySelector('#username-error');
           name_error.textContent = errors.username;
       }
   },
   200: function (responseText) { /* ... */ }
};

function ajaxCall(url, handlers) {
    var r = new XMLHttpRequest(); 
    r.open("POST", url, true);
    r.onreadystatechange = function () {
        if (r.readyState === 4 && typeof handers[r.status] === 'function') {
            handers[r.status](r.responseText);
        }
    };
    r.send(/* ... */);
}

ajaxCall('userform_validation.php', handlers);

答案 1 :(得分:0)

要在网页上以文字形式输出AJAX响应,请先在HTML中创建新的DIV

<div id="response"></div>

并使用以下脚本将Ajax文本响应写入DIV。您需要使用函数调用它。

var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("response").innerHTML=xmlhttp.responseText;
}

有关Ajax响应的更多信息http://www.w3schools.com/ajax/ajax_xmlhttprequest_response.asp