0

我从 php 后端收到 jsong 响应,例如

  feedback =   {"html":"<form action='someurlonrest' method='post' style='margin-left:100px;' ><div style='padding: 10px;'>Ticket No<input type='text' id='tkt' name='tkt' ><\/div><div style='padding: 10px;'>somthing <input type='text' id='smthing' name='smthing' ><\/div><div style='padding: 10px;'>Query about <input type='text' id='query' name='query' ><\/div><input type='submit' class='classname' ><\/form>"}

为什么每当我尝试做时都会收到未定义的消息

alert(feedback.html);

更新

function get_fb_success(){

    var feedback = $.ajax({
        type: "POST",
        url: "feedback.php",
        async: false
    }).success(function(){
        setTimeout(function(){get_fb_success();}, 100000000000000000);
    }).responseText;
    alert(feedback);
    //$('#log_success').val('');


    $('#log_success').html(feedback.html);
    //$('div.feedback-box-success').html('success feedback');
}
4

2 回答 2

1

两件事情:

通过添加属性通知 jQuery 你期望 JSON 返回,dataType: 'json'然后不要忘记将 传递给response回调success

在您执行此操作时$('#log_success').html(),数据实际上还不可用,因为它是一个异步调用(也许这就是您尝试使用那么长的原因setTimeout()?)。改为在成功处理程序中执行此操作:

function get_fb_success(){

    // feedback is a jqXHR object, *not* the JSON response!
    var feedback = $.ajax({
        type: "POST",
        url: "feedback.php",
        async: false,
        // Specify datatype
        dataType: 'json',
        success: function(response) {
           // Call .html() in the success() handler
           $('#log_success').html(response.html);
        }
    });
}
于 2012-09-28T14:51:58.853 回答
0

您的问题的答案是您可以看到您正在寻找的对象值。在这里查看小提琴:http: //jsfiddle.net/aWC8G/

在此之下,您的 ajax 函数看起来有点奇怪。我认为它应该是这样的:

function get_fb_success(){

    var feedback;
    $.ajax({
        type: "POST",
        url: "feedback.php",
        async: false,
        dataType: 'json',
        success:function(data){
            feedback = data;  //assuming you are 
        }
    });
    alert(feedback);
    //$('#log_success').val('');


    $('#log_success').html(feedback.html);
    //$('div.feedback-box-success').html('success feedback');
}

当然不是对服务器的异步调用,如果您想要真正的异步 ajax,请这样做(这应该可以工作,因为您的函数实际上没有返回任何值:

function get_fb_success(){

    $.ajax({
        type: "POST",
        url: "feedback.php",
        dataType: 'json',
        success:function(feedback){
            $('#log_success').html(feedback.html);
        }
    });

}
于 2012-09-28T14:54:55.627 回答