2012-09-25 91 views
0

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

在现实中,我想设置该变量为后期的数据,这将取决于表单输入各不相同,但截至目前我甚至无法把它与眼前这个基本的例子工作。它只是返回“未定义”。

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

谢谢!

回答

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); 
?> 
+0

rkstar,谢谢你的回答......你说的话似乎很合乎逻辑,但警告“data.lan_setting”给了我“未定义”......任何想法? –

+0

对不起。我通常使用stdClass,但认为哈希也会起作用。错误。 :)测试了这一点。有用。 – rkstar

0

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

成功(数据,textStatus,jqXHR)功能,数组的函数是 如果请求成功调用。这个函数会得到传入三个 参数:从服务器返回的数据,根据 具体的数据类型参数格式;描述状态的字符串;和jqXHR

另外,当使用$ .ajax时,有一定数量的对象可以通过。见http://api.jquery.com/jQuery.ajax/

至于您的文章,您能够做到......

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

将发布第二个参数,{lan_setting: "en"}到PHP服务,并呼应它的响应。

1

好吧,你声明success功能失常(从jQuery .ajax() documentation):

成功(数据,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。