我正在使用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"}]
我的請求標頭設置爲application/JSON目前,但我嘗試了多種不同類型的爲好。試圖讓它以某種方式發射。 :)我的迴應標題設置爲text/html。我是否正確地假設ajax()函數中的Content/Type參數用於返回數據,而不是用於發送? – leviathenator 2011-03-23 22:45:21
嗯,是的,這就是整個問題。對於請求本身沒有內容類型,這是針對響應的。 設置上面引用的內容類型(在PHP中是!!!)並給它一個試試:) – SchizoDuckie 2011-03-23 22:57:45
事實證明我的問題是因爲代碼上方某處出現「return true」。不知道爲什麼我在那裏,但一旦我把它拿出來,它完美無瑕地工作。謝謝您的幫助!!! – leviathenator 2011-03-27 01:32:46