2012-09-25 156 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。