2011-03-23 97 views
0

我正在使用JQuery.ajax將json字符串發送到一個php頁面,我試圖通過變量拉動數組並調解。出於某種原因,當我運行腳本時,我可以在螢火蟲中看到POST,但是當我嘗試獲取參數時,我只能看到一個空的Array()。我一直試圖弄清楚這幾個小時,並在我的智慧結束。我從asp.net移動到.php,所以我的語法仍然有點新,但是這看起來應該很簡單。使用JQUERY AJAX傳遞的JSON對象無法訪問

這是我的代碼爲jquery發送。

$('#form_add').submit(function() { 
    var serial_data = $(this).serialize(); 
    $(".page_content").fadeOut("slow", function(){ 
     $.get(uri_base +'/'+uri_cont+'/get_db_name/true/'+Math.random(), function(data) { 
      $.ajax({ 
       type: 'POST', 
       url: uri_base +'/AJAX/add_record/'+data+'/'+Math.random(), 
       data: serial_data, 
       contentType: "application/json", 
       success: function(data){ 
        $.ajax({ 
         type: 'POST', 
         url: uri_base +"/"+ uri_cont +"/"+ uri_func, 
         data: data, 
         success: function(data){ 
          alert(data) 


         }, 
         error: function(xhr, ajaxOptions, thrownError){ 
          alert(xhr.status); 
          alert(thrownError); 
         } 

        }); 

       }, 
       error: function(xhr, ajaxOptions, thrownError){ 
        alert(xhr.status); 
        alert(thrownError); 
       } 

      }); 

     });      
    }); 
    return false; 
}); 

忽略第一個.get(),它只是拉回一個變量來完成下一個URL。 first.ajax()調用將序列化的表單數據發送到我的AJAX控制器並推入數據庫。控制器的返回發回了一個我轉換成json的對象數組。

if(isset($key)){  
    $data['add_msg'] = $this->model_ajax->add_record($table,$array); 
    $exploded_data = json_encode($data['add_msg']); 
    print_r($exploded_data); 
    exit; 
} 

從那裏下一個阿賈克斯()應該將數據發送到我的控制器來拉回來一個視圖中.pag_content div來顯示。我曾試着迴應json對象,每個循環都有一個鍵來取出鍵,還有其他許多東西。什麼都沒有......我得到一個JSON無效錯誤(當試圖解碼它時),只是「Array()」輸出,或者在循環它們時根本沒有。

這是控制器代碼和我的螢火我看到POST輸出...

echo $_POST; 

$array = $_POST; 
echo $array; 

foreach($_POST as $key){ 
    echo $key; 
} 
exit; 

[{"id":"29","datetime":"2011-03-23 12:10:25","full_name":"Leroy Brown","email_address":"[email protected]","password":"asdf","id_group":"0","id_sites":"0","active":"0"}] 

回答

0

在PHP你輸出什麼之前,請務必發送正確的內容類型。像jQuery和MooTools的框架往往過濾器接受字符集(他們應該)(你可以看到,在螢火蟲)

標題(「內容類型:應用程序/ JSON」); //也可以是文本/ JSON,檢查接受頭的螢火取決於你的框架

:)

+0

我的請求標頭設置爲application/JSON目前,但我嘗試了多種不同類型的爲好。試圖讓它以某種方式發射。 :)我的迴應標題設置爲text/html。我是否正確地假設ajax()函數中的Content/Type參數用於返回數據,而不是用於發送? – leviathenator 2011-03-23 22:45:21

+0

嗯,是的,這就是整個問題。對於請求本身沒有內容類型,這是針對響應的。 設置上面引用的內容類型(在PHP中是!!!)並給它一個試試:) – SchizoDuckie 2011-03-23 22:57:45

+0

事實證明我的問題是因爲代碼上方某處出現「return true」。不知道爲什麼我在那裏,但一旦我把它拿出來,它完美無瑕地工作。謝謝您的幫助!!! – leviathenator 2011-03-27 01:32:46