27

我有一个非常基本的 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网站上关于成功回调数据字段的文档,它说返回的数据是来自服务器的数据。但是由于某些奇怪的原因,当我发出警报时$data,我得到了[object Object]

我期待看到这样的东西,因为这是服务器会发回的

<status>0</status>

编辑:

数据也作为 POST 传递

4

4 回答 4

47

你需要使用JSON.stringify(data)inalert来获得任何可读的东西。

此外,$data是与 . 完全不同的变量名data

于 2013-08-05T16:20:09.337 回答
29

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

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

于 2013-08-05T16:45:19.667 回答
8

如果您的服务器发送 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,
于 2013-08-05T16:25:55.420 回答
-1

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

于 2021-03-08T14:46:58.440 回答