2011-09-01 37 views
1

我试图发布一些数据到web服务,并利用它返回的XML数据。我在jQuery的文档中看到了post()函数中的示例:javascript/jquery - 理解jquery的帖子()和javascript的过程()函数

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data) { 
     process(data); 
    }, 
    "xml" 
); 

过程函数有什么作用?数据是什么样的?我是否将这些处理过的数据分配给一个变量?试图了解我将如何利用从这篇文章返回的值()。

回答

5

什么的过程功能呢?

没有这样的标准功能。由你来定义它,所以它会做你告诉它做的任何事情。

数据是什么样的?

这将取决于您的Web服务返回的内容。如果它是XML,它将代表一个XML树。因此,举例来说,如果你的服务返回以下XML:

<foo> 
    <bar>some value</bar> 
</foo> 

,你可以查询bar节点的值是这样的:

function(data) { 
    var value = $('bar', data).text(); 
    alert(value); 
} 

而且这里有一个live demo在这里你可以看到它的行动。

4

process(data);可以是你要调用东西与data任何功能。在大多数情况下,你会希望将数据分配给一个元素或显示给用户之前做一些其他的按摩。

除非其非常复杂的,你可以跳过调用单独的函数的支持,例如:

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data) { 
     $('#target').html(data); // assuming data is a html string 
    }, 
    "xml" 
); 

以它来处理形状:

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data) { 
     process(data) 
    }, 
    "xml" 
); 

function process(data) { 
    $('#target').html(data); // assuming data is a html string 

} 

如果在一些其他格式的数据,那么你按摩它以提取相关位或以某种方式在process或任何自定义功能中转换它。

例如,假设你得到一个JSON对象返回:

data = { "status": "success", "text": "Processed Succesfully" }; 

然后在回调,你会检查状态和显示信息适当

function process(data) { 
    if(data.status == "success") 
     $('#target').html(data.text); // assuming data is a html string 
    else 
     alert("Error"); 
}