0

我有以下 ajax 调用。我想做的是在ajax请求期间设置变量“lan_setting”,并能够在成功时使用该变量。

实际上,我想将该变量设置为发布数据,这将根据表单输入而有所不同,但到目前为止,我什至无法仅使用这个基本示例。它只是返回“未定义”。

_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 变量?

谢谢!

4

3 回答 3

1

好吧,如果你要发帖,你应该在这里使用 jquery post 功能

$.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);
?>
于 2012-09-26T00:09:48.363 回答
1

好吧,您声明success函数错误(来自jQuery .ajax() 文档):

成功(数据,文本状态,jqXHR)

换句话说,success函数得到data, textStatusjqXHR没有别的。你不能只接受你的 POST 变量——它只会得到它得到的东西。您也不能通过在config对象中指定它来传递 POST 变量:您必须通过data属性传递它。最后,.ajax()默认为 GET 请求,因此您必须明确指定要使用 POST 请求。

我对你想做什么有点困惑;如果您lan_setting在进行 AJAX 调用之前知道 的值,为什么需要将其传递给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); 
    }
});

If, on the other hand, you want to pass the lan_setting value in, have it modified by the server, and passed back, you will have to somehow encode it in the response, probably with JSON.

于 2012-09-26T00:11:34.557 回答
0

jQuery.ajax 中的 success() 方法接受 3 个参数。第一个是来自请求的响应。

success(data, textStatus, jqXHR)Function, Array 请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR

此外,在使用 $.ajax 时,您可以传递一定数量的对象。见http://api.jquery.com/jQuery.ajax/

至于你的帖子,你可以做...

$.post("service.php", {lan_setting: "en"}, function(response) { alert(response); }

这会将第二个参数发布{lan_setting: "en"}到该 php 服务,并回显它的响应。

于 2012-09-26T00:10:14.783 回答