我有以下ajax调用。我想做的是设置变量" lan_setting"在ajax请求期间,能够在成功时使用该变量。
实际上我想将该变量设置为后期数据,这将根据表单输入而有所不同,但到目前为止,我甚至无法使用此基本示例。它只是返回" undefined"。
_jqXHR = $.ajax({
url: url,
data: {lan_setting: 'en'},
scriptCharset: "UTF-8",
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(lan_setting, data, textStatus, jqXHR) {
alert(data.lan_setting);
}
});
如何在成功时使用通过ajax发送的post变量?
谢谢!
答案 0 :(得分:1)
好吧,如果你发帖,你应该使用jquery post function here
$.post(
url,
{lan_setting:"en"},
function( data, status, jqXhr ){
alert(data.lan_setting);
},
"json"
);
然后php:
<?php
// do stuff
$response = new stdClass;
$response->lan_setting = $_POST["lan_setting"];
print json_encode($response);
?>
答案 1 :(得分:1)
好吧,你宣布success
函数错误(来自jQuery .ajax() documentation):
成功(data,textStatus,jqXHR)
换句话说,success
函数会获得data
,textStatus
,jqXHR
等等。你不能只接受你的POST变量 - 它只能得到它的结果。您也无法通过在config
对象中指定它来传递POST变量:您必须通过data
属性传递它。最后,.ajax()
默认为GET请求,因此您必须明确指定要使用POST请求。
我对你想做的事感到有些困惑;如果你在进行AJAX调用之前知道lan_setting
的值,为什么需要将它传递给success
函数?只需使用它:
var lan_setting = 'en';
_jqXHR = $.ajax({
url: url,
type: "POST",
data: {
lan_setting: lan_setting
},
scriptCharset: "UTF-8",
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(lan_setting, data, textStatus, jqXHR) {
alert(lan_setting);
}
});
另一方面,如果要传递lan_setting
值,由服务器修改并传回,则必须以某种方式在响应中对其进行编码,可能使用JSON。 / p>
答案 2 :(得分:0)
jQuery.ajax中的success()方法,接受3个参数..第一个是来自请求的响应。
success(data,textStatus,jqXHR)Function,Array一个函数 如果请求成功则调用。该函数传递了三个 arguments:从服务器返回的数据,格式为 dataType参数;描述状态的字符串;和jqXHR
此外,使用$ .ajax时,您可以传递一定数量的对象。见http://api.jquery.com/jQuery.ajax/
至于你的帖子,你可以做...
$.post("service.php", {lan_setting: "en"}, function(response) { alert(response); }
将第二个参数{lan_setting: "en"}
发布到该php服务,并回显它的响应。