jquery ajax数据显示[object Object]

时间:2013-08-05 16:19:15

标签: ajax jquery

我有一个非常基本的ajax调用来警告从服务器报告的数据

$.ajax({
       type: "POST",
       url: "/someform/act", //edit utl to url
       data: { changed: JSON.stringify(plainData) }, //edit to include
       success: function(data) {
          alert(data);             //data not $data
       },
       error: function() {
          //error condition code
       }
});

根据jquery网站上关于成功回调的数据字段的docs,它说返回的数据是来自服务器的数据。但是,由于某些奇怪的原因,当我提醒$data时,我得到[object Object]

我期待看到类似的东西,因为这是服务器发回的内容

<status>0</status>

编辑:

数据也作为POST传递

4 个答案:

答案 0 :(得分:36)

您需要在JSON.stringify(data)中使用alert来获取任何可读内容。

此外,$data是一个与data完全不同的变量名称。

答案 1 :(得分:22)

alert()打印参数的字符串表示 - 因此,如果您传递一个对象,则会得到[object Object]

要检查数据,请更好地使用console.log(data)

答案 2 :(得分:6)

如果服务器发送JSON,则需要将dataType: 'json'放入ajax调用。请注意您的ajax调用中存在一些错误。

        $.ajax({
               type: "POST",
               url: "/someform/act", // NOT 'UTL',
               data: {
                  key: value,
                  key2: value2
               },
               // or data: plaindata, // If 'plaindata' is an object.
               dataType: 'json',
               success: function(data) {
                  console.log(data); // As moonwave99 said
               },
               error: function() {
                  //error condition code
               }
        });

修改

发送数据时,您应该发送一个对象。 jQuery将处理数组以将其发送到服务器。因此,如果普通数据是一个对象,它应该是这样的

               data: plainData,

答案 3 :(得分:-1)

如果是 IIS,请尝试在默认网站之外创建一个站点(例如 localhost/ajax1)。比如一个新站点ajax1,不要放在DefaultAppPool里,而是放在你的池子里,比如ajax1。试试 http://ajax1