在jQuery AJAX调用中返回多个值
我有一个jQuery post函数,它在单击在jQuery AJAX调用中返回多个值,jquery,json,Jquery,Json,我有一个jQuery post函数,它在单击div后成功返回响应。但是,我想在成功时返回多个变量。我是否必须使用JSON,如果是,成功后是否可以将其集成到$.ajax函数中 编辑 我感谢大家的帮助 我从未用PHP编程。在asp.net中,JSON是异步webservice调用中数据交换的默认模式,因此作为开发人员,我不必担心JSON的底层细节。我想即使jQuery也会以JSON格式获取数据。如果您有多个值,可以以列表或字典格式获取它们。您必须从favorite.php返回JSON(或jQuer
div
后成功返回响应。但是,我想在成功时返回多个变量。我是否必须使用JSON,如果是,成功后是否可以将其集成到$.ajax
函数中
编辑
我感谢大家的帮助 我从未用PHP编程。在asp.net中,JSON是异步webservice调用中数据交换的默认模式,因此作为开发人员,我不必担心JSON的底层细节。我想即使jQuery也会以JSON格式获取数据。如果您有多个值,可以以列表或字典格式获取它们。您必须从favorite.php返回JSON(或jQuery的ajax()函数支持的其他数据格式)。
编辑:它不必是json,但对于多个返回值,它是最容易解析的。例如,如果返回xml或html,则必须遍历节点以返回值 例如,如果您返回:
{“user”:“Joe”,“success”:“pass”,“message”:“favorite added”}
在成功中,您将使用:
function(response){
var user = response.user;
var success = response.success; // etc.
}
要记住的重要一点是在ajax调用中指定数据类型为json。
jQuery还支持其他数据类型:xml、html、脚本、jsonp、文本
我相信默认的是html。而且,在编写了php以在php脚本中返回具有正确格式的标题的xml之后,我可以告诉您,有时您需要指定jQuery的数据类型以正确解析它
我有一个jquery post函数,它在单击div后成功返回响应。
但是,我想在成功时返回多个变量
您只能返回一个值—一个文本块(在大多数情况下)
但是,您可以构造该文本,以便可以轻松地从中提取不同的数据位
我必须使用JSON吗
没有,但这是最简单的选择
,如果是,成功后是否可以将其集成到$.ajax函数中
嗯。对你有没有看过这本手册?它明确提到使用JSON和获取对象作为成功函数的参数。最好只使用来自服务器的JSON响应。这样,您的服务器后端将充当JSON-RPC服务器,前端将完全独立于它!当然,您可以将JSON与
$.ajax
函数一起使用。下面是一个例子:
$.ajax({
url: 'http://some.url.com/',
data: 'some=post&data=xyz',
type: 'POST',
dataType: 'json',
success: function(response, statusText) {
// `response` here is a valid JSON object; jQuery handles the work of parsing the response, etc.
}
});
假设返回的json是这样的
{
firstName: 'Ricardo',
lastName: 'Jones',
errors: 0
}
您可以使用jQuery getJSON方法,如下所示:
$.getJSON(
'favorite.php',
{ 'action': 'favorite', 'username': username, 'topic_id': topic_id, 'token': token },
function(data) {
alert(data.firstName);
alert(data.lastName);
alert(errors);
}
)
在返回函数中,您可以获得所需的许多变量。要将一些数据发送到“url”下提到的页面,您可以使用“数据”部分执行此操作
数据:{u令牌:CSRF令牌,保护字符串:request.term,有机体:“人类智慧”}
从url下面提到的页面中,这些值可以取为:$request->get('prot_string')$请求->获取(“有机体”)
此外,如果响应不是有效的JSON,则调用error
参数中指定的函数,并传递xht
对象、statusText
和响应。查看jQuery文档了解更多详细信息。另一点:使用eval()
函数直接解析响应被认为是不安全的。另外,访问参数,比如jsonobj.someparameter
通常认为做jsonobj['someparameter']
更安全。JSON-RPC服务器是什么意思?有了它有什么好处?ps我用了你的建议,它奏效了,我不知道没有$get.JSON你能做到这一点!此函数与您建议的函数有什么不同?@Scarface:JSON-RPC允许您将命令和参数传递给服务器并获得响应。它与您所做的非常相似,除了(据我所知,我从未使用过)它是服务器的JSON,以及服务器的JSON。此外,getJSON()是ajax()的包装器,它指定数据类型:“JSON”
只是好奇,我使用php在JSON中传递值,我正在使用一个名为json.php的大文件,它允许我使用“$json->encode($data);”有没有一种不使用外部文档进行编码的方法?@Scarface:php在默认php安装5.2之后内置了json_encode。看:大卫,你是如何组织文本的,只是好奇,什么时候最好用json@Scarface-作为JSON、XML、CSV,以及您喜欢的任何格式。一旦成功,所有事情都会发生在完成请求的页面上。
$.getJSON(
'favorite.php',
{ 'action': 'favorite', 'username': username, 'topic_id': topic_id, 'token': token },
function(data) {
alert(data.firstName);
alert(data.lastName);
alert(errors);
}
)