如何返回成功的几个数据?

时间:2011-03-21 21:56:57

标签: javascript jquery ajax

是否可以在ajax中返回两个不同的成功数据,例如:

$.ajax({
   url: url_action,
   type:'POST',
   data: dataToSend,
   success:function(results)
   {
      $(".photosLive").html(results);
   }

});

在结果中,有两条信息:标题图像。 然后我需要将标题放在另一个div .titleLive中并将图像放入.photosLive(但它已经可以了)

我该怎么做?

3 个答案:

答案 0 :(得分:3)

您可以返回一个包含两个字段,标题和照片的JSON对象,然后您可以将其解析并插入到DOM中

JSON语法基本上是Javascript对象语法,看看:

http://www.json.org/js.html

几乎所有服务器端语言都有来自Objects的JSON生成器

JSON示例:假设您的服务器生成我分配给var json(而不是html)的字符串,因此您将其作为ajax调用的响应接收到您的成功方法

var json = '{title:"A new title", photo:"path/to/pic"}'

var result = jQuery.parseJSON( json ); 


$('.titleLive').text(result.title);
$('.photosLive').attribute(src, result.photo);

以JSON格式返回您的回复只是具有正确格式的纯文本,例如在您的服务器端,例如:

setResponse("{title:\"A new title\", photo:\"path/to/pic\"}");

答案 1 :(得分:2)

好。执行此操作的最佳方法是让您请求的任何URL以JSON形式返回结果。但是,如果必须返回HTML,则可以执行以下操作:

...
success: function(results) {
    // select the image and title from wherever it may be in the HTML returned
    var response = $(results),
        title = response.find('#title').text(),
        image = response.find('img').attr('src');

    // Do whatever with your info.
}

编辑: JSON返回示例:

返回标题和图像信息的页面:

{"title":"My Title","image":"http://mydomain.com/image.png"}

您的成功回调(您不必为响应设置新变量,我只是这样做来说明):

success: function(results) {
    var title = results.title,
        image = results.image;

    // Do whatever with your info.
}

答案 2 :(得分:2)

这完全取决于您返回的数据类型(Json / XML /等)。 假设您返回纯文本:title:lorup ipsum,image:foobar.png: 在success函数中:

var returnedData = results;

var title = returnedData.split(",")[0].replace('title:','');

var image= returnedData.split(",")[1].replace('image:','');

$(".titleLive").html(title );

$(".photosLive").html(image);

顺便说一句,这不干净。正如我所提到的,最好的方法是使用结构化数据。

问候。