首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理带条件的ajax resonseText

如何处理带条件的ajax resonseText
EN

Stack Overflow用户
提问于 2011-05-18 04:25:56
回答 4查看 481关注 0票数 1

我已经用ajax发布了我的表单,一切都很好。就ajax而言,它使用responseText成功地处理了它的任务。但这并不意味着在我的例子中一切都是正确的。

ajax正在发布我的表单,该表单运行一个php文件将数据插入到我的数据库中。无论成功还是失败,都会有一个responseText,如果所有数据都已插入到数据库中,它会说:“谢谢”,如果插入失败,则会说"Err:“。

如何从responseText创建if条件来处理这种自定义responseText错误?或者我可以强制它在"Err:“的responseText上返回一个.ajaxError()?

HTML表单:

代码语言:javascript
运行
复制
<form method="post" action="contact.php" id="contact">
    <fieldset>
        <input type="text" id="email" class="required email" name="email"  maxlength="30" value="youremail @ example.com" />
        <input type="text" id="subject" class="required" name="subject" maxlength="24" value="Enter your subject" />
        <textarea id="msg" class="required textarea" name="msg" cols="30" rows="5">Reason for contact.</textarea>
        <input type="submit" class="formBtn" value="Punch me an Email" />
    </fieldset>
</form>

JQuery:

代码语言:javascript
运行
复制
$(window).load(function(){
  $('#contact').ajaxForm({
        beforeSubmit:formValidate, 
        success: showResponse,
        clearForm:true
    }); 
});
function formValidate(){
    $('#contact').validate({
                rules:{
                    email:{required: true, email:true},
                    subject:{required: true, minlength: 5},
                    msg:{required: true, minlength: 50}
                },
                messages:{
                    email:'',
                    subject: '',
                    msg: ''
                },
                invalidHandler:function(){
                    $('div.error').hide();
                },
                focusInvalid:true,
                onfocusout:false,
                submitHandler: function() {
                    $('#contact').ajaxSubmit();
               }
            });
}
function showResponse(responseText,statusText,xhr,$form){
    console.log(responseText);
//    alert(responseText);
    // $("#contact").toggle('slow');
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-18 04:37:34

我建议在$.ajaxForm调用中添加dataType: 'json'属性。然后,在你的php中,不用返回“谢谢”,你可以返回:

代码语言:javascript
运行
复制
return json(array('status'=>'success'));

代码语言:javascript
运行
复制
return json(array('status'=>'failed'));

然后在show-response中你可以运行类似这样的命令:

代码语言:javascript
运行
复制
if(responseText.status === 'failed') { // do something })
票数 1
EN

Stack Overflow用户

发布于 2011-05-18 04:34:00

您必须让您的PHP发送一个错误字符串,以便它出现在responseText中。然后,在您的JavaScript代码中,您必须解释该错误字符串。这不会是一个AJAX错误,因为就AJAX而言,一切都运行得很好。AJAX并不知道您的程序发现了错误;它只知道它发送了一个请求并得到了一个响应。

换句话说: AJAX和您的程序之间的权责分离意味着AJAX不允许干预您的程序操作。

票数 1
EN

Stack Overflow用户

发布于 2011-05-18 04:38:12

如果你检测到一个错误的服务器端,让你的php代码将响应状态设置为500并返回你的错误信息。这将触发ajaxForm的错误回调。

我不是一个PHP爱好者,所以我不确定你是如何将你的响应设置为500的,但是我在Asp.net中使用了这个方法,它工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6036676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档