获取ajax发布成功数据

时间:2012-09-25 23:52:36

标签: php javascript jquery ajax post

我有以下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变量?

谢谢!

3 个答案:

答案 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函数会获得datatextStatusjqXHR等等。你不能只接受你的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服务,并回显它的响应。