【发布时间】:2009-06-17 16:50:05
【问题描述】:
使用$.post,你可以向服务器发送信息,但是当你需要从服务器接收信息时呢?
信息如何从可以由 php 变量保存的方式变为可以由 javascript 变量保存的方式,反之亦然?
【问题讨论】:
标签: php javascript jquery ajax
使用$.post,你可以向服务器发送信息,但是当你需要从服务器接收信息时呢?
信息如何从可以由 php 变量保存的方式变为可以由 javascript 变量保存的方式,反之亦然?
【问题讨论】:
标签: php javascript jquery ajax
这与您的问题更相关:http://docs.jquery.com/Ajax/jQuery.post
提示请求 test.php 的结果(HTML 或 XML,取决于返回的内容)。
$.post("test.php", function(data){
alert("Data Loaded: " + data);
});
使用额外的数据负载(HTML 或 XML,取决于返回的内容)发出请求 test.php 的结果。
$.post("test.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
获取 test.php 页面内容,将其存储在 XMLHttpResponse 对象中并应用 process() JavaScript 函数。
$.post("test.php", { name: "John", time: "2pm" },
function(data){
process(data);
}, "xml");
获取已经以json格式返回的test.php页面内容("John","time"=>"2pm")); ?>)
$.post("test.php", { func: "getNameAndTime" },
function(data){
alert(data.name); // John
console.log(data.time); // 2pm
}, "json");
【讨论】:
查看json_encode() 和json_decode()。这些现在是 PHP 的一部分,允许您在 PHP 数组和关联数组(或 stdClass 对象)和 javascript 数组或对象(作为 JSON 文字)之间来回切换。
基本上,您可以执行echo json_encode($all_my_php_data); 并返回一个 javascript 对象,而不是返回 xml 或 html。
如果您将“json”作为 $.post() 的类型参数传递,您的成功回调将包含您在 PHP 脚本中回显的 JSON 对象。
【讨论】:
然后你需要接收服务器发回的内容。您只需使用 'data' 参数为 $.post 定义回调函数。例如:
$.post('/index.php', { key: 'value' }, function(data) { alert(data); });
您可以指定返回值的类型,以便 jQuery 自动处理它。如果你从 PHP 脚本返回 JSON 值,那么你应该在末尾添加额外的参数:
$.post('/index.php', { key: 'value' }, function(data) {
alert(data.someItem);
}, 'json');
但是如果你需要从 PHP 服务器获取数据而不先 POST 或 GET 任何东西,那么你需要实现 Comet。但这需要更多的工作:)
【讨论】:
jQuery.post 函数的“callback”部分是您要查看的内容。
【讨论】:
在 http 中,您执行从客户端(网络浏览器中的 JavaScript)到服务器的请求,然后处理后者返回的信息。您可以选择在两种通信中以何种方式表示信息。
当使用 AJAX(可能通过 jQuery)时,您可以向 php 处理程序发出请求,该处理程序负责将信息返回给浏览器,通常格式为 JSON 文字(您可以使用 json_encode( ),正如布赖恩所建议的)。最终你会在客户端解析它(例如使用 jQuery)来获取一个 javascript 对象。
($.post( url, [data], [callback], [type] ) 函数会自动解析响应并将其交给回调函数,其签名应为 callback(data, textStatus) where data 是解析后的对象,textStatus 报告成功或失败状态 (jQuery.post)。
【讨论】: