ajax成功函数是打印[object Object]而不是纯文本。为什么?

时间:2012-06-22 12:44:42

标签: java jquery ajax playframework-2.0

jQuery代码:

function ajaxsubmit(){
$.ajax({
    url: "/update",
    type: "POST",
    dataType: "html"
}).success(function(data) {
      $('#result').html(data);
  });
}

和我的Java函数:

public static Result ajaxupdate() {
    String done = "very good";
    return ok("very good").as("text/plain");
}

警报正在提供[object Object],而不是纯文本"very good"。为什么?

3 个答案:

答案 0 :(得分:4)

你想用:

alert(JSON.stringify(data));

所以你的JavaScript看起来像:

function ajaxsubmit(){
$.ajax({
    url: "/update",
    type: "POST",
}).complete(function(data) {
      alert(JSON.stringify(data));
  });
}

您的Java代码看起来像是在将字符串发送回客户端之前将其包装到对象中,JSON.stringify()将向您显示正在返回的对象的结构,从那里您可以找出什么返回对象的属性包含返回变量(可能类似于data.data或data.return)

答案 1 :(得分:2)

添加dataType:“text”并使用success()

更改complete()
function ajaxsubmit(){
    $.ajax({
        url: "/update",
        type: "POST",
        dataType: "html"
    }).success(function(data) {
          $('#result').html(data);
      });
    }

答案 2 :(得分:2)

jQuery文档清楚地回答了您的问题。来自http://api.jquery.com/jQuery.ajax/

complete(jqXHR, textStatus)
<...>
two arguments: The jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object and a string

您可以在文档中找到有关jqXHR的更多信息。 如果要使用响应字符串,请考虑选择.success方法。您可能必须明确提供.contentType