【问题标题】:ajax success function is printing [object Object] instead of plain text. Why?ajax 成功函数是打印 [object Object] 而不是纯文本。为什么?
【发布时间】:2012-06-22 12:44:42
【问题描述】:

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"。为什么?

【问题讨论】:

  • 在 chrome 中打开它,在警告行设置断点,然后将鼠标悬停在 data 上,它会准确地告诉您该对象在内部的样子。
  • 我猜测 jquery 正在将您的 json 转换为对象文字。
  • 你试过 alert(data.d);
  • 请不要在标题中添加标签。我们有一个标签系统。它工作得很好。标签在搜索、搜索引擎优化等方面具有优先权。将标签人为地塞进标题没有任何好处。
  • 哦,好的,我会拿出来的。。对不起

标签: java jquery ajax playframework-2.0


【解决方案1】:

你想使用:

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)

【讨论】:

    【解决方案2】:

    添加 dataType: "text" 并将 complete() 更改为 success()

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

    【讨论】:

    • 谢谢克里斯蒂,我现在明白了。!太棒了!
    • Cristi,现在我将 html 元素附加为响应数据。我怎样才能使每个 ajaxsubmit 函数附加一个 html 元素。现在它只附加一次,因为 div 元素的 id 变得唯一。请看我上面的编辑。
    【解决方案3】:

    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

    【讨论】:

    • contentType 是你发送到服务器的,dataType 是你得到的。
    • 好的,非常感谢friendzis,很棒的信息,又学到了一件事!
    猜你喜欢
    • 2016-12-19
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    相关资源
    最近更新 更多