PHP通过Json返回的Jquery插入错误消息

时间:2014-02-18 11:55:57

标签: javascript php jquery ajax json

我正在尝试通过AJAX提交表单。我将表单发送给PHP,如果有通过Json,则返回错误消息。

如果没有错误,代码运行良好。但如果不是......我无法插入错误消息。我不明白为什么。

以下是我想做的事情:

function addWishlist(){
    var formdata = $("#addwishlist").serializeArray();
    $.ajax({
        url: "/Shawili/<?= $profile['username'] ?>/addwishlist/",
        data: formdata,
        type: 'POST',
        dataType: 'json',
        success: function(json){
            if(json.valid == 'ok') {
              $('#addwishlist').each(function(){
                                this.reset();
                            });
          } else {
              $.each( json, function( key, value ) {
                $('#'+key).before('<div class="row"><div class="col-sm-offset-2 col-sm-5"><span class="label label-danger">' + value + '</span></div></div>');
              });
          }

        }
    });

}

此代码正常运行:

function addWishlist(){
    var formdata = $("#addwishlist").serializeArray();
    $.ajax({
        url: "/Shawili/<?= $profile['username'] ?>/addwishlist/",
        data: formdata,
        type: 'POST',
        dataType: 'json',
        success: function(json){
            if(json.valid == 'ok') {
              $('#addwishlist').each(function(){
                                this.reset();
                            });
          } else {
              $.each( json, function( key, value ) {
                alert(key +':'+ value);
              });
          }

        }
    });

}

此代码不是:

function addWishlist(){
    var formdata = $("#addwishlist").serializeArray();
    $.ajax({
        url: "/Shawili/<?= $profile['username'] ?>/addwishlist/",
        data: formdata,
        type: 'POST',
        dataType: 'json',
        success: function(json){
            if(json.valid == 'ok') {
              $('#addwishlist').each(function(){
                                this.reset();
                            });
          } else {
              $('#title').html('<p>test</p>')
          }

        }
    });

}

html表单是通过AJAX显示的,因为我正在使用制表符系统。 (当用户单击它时,每个选项卡都通过AJAX加载)JS脚本位于布局的末尾。 以下是表单的一部分:

<div id="title" class="form-group"><label class="col-sm-2 control-label" for="title">Title</label>
            <div class="col-sm-4">
            <input type="text" placeholder="" name="title" class="form-control"></div></div>

但是,当我使用Firebug时,我可以看到html结构中的更改,但页面中没有任何附加内容。

这是我的标签加载功能:

$('#myTabs a').click(function (e) {
    e.preventDefault();

    var url = $(this).attr("data-url");
    var href = this.hash;
    var pane = $(this);

    // ajax load from data-url
    $(href).load(url,function(result){      
        pane.tab('show');
    });
});

这是Firebug截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试先绑定另一个而不是DOM元素,如下所示:

$('#otherDivContent').find('#title').html('<p>test</p>');

#otherDivContent是您最初在页面上的div(或其他元素)。