2011-12-31 42 views
3

我發現這個:http://code.google.com/p/jquery-json,一個模擬json_encode PHP函數的插件。編碼爲json對象並通過ajax發送

所以,我想這一點:

var datasend = {}; 
    datasend['name'] = $(".chat_username").val(); 
    datasend['message'] = $(".chat_text").val(); 
    encoded_send = $.toJSON(datasend); 
    $.ajax({ 
     type: "POST", 
     url: "/apps/chat_write", 
     data: {send_data: encoded_send }, 
     success: function(response){ 
     if(response!="OK"){ 
      alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα."); 
     }else{ 
      $(".chat_text").val(""); 
      $(".chat_count").val("0/100"); 
     } 
     } 
    }); 

的第一個問題我有這個

$.ajax({ 
     type: "POST", 
     url: "/apps/chat_write", 
     data: "name="+escape($(".chat_username").val())+"&message="+escape($(".chat_text").val()), 
     success: function(response){ 
     if(response!="OK"){ 
      alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα."); 
     }else{ 
      $(".chat_text").val(""); 
      $(".chat_count").val("0/100"); 
     } 
     } 
    }); 
    return false; 
}); 

,我已經與希臘字符的問題.. 所以我decidied使用JSON對象 如果這個?代碼是正確的我該如何解析PHP中的JSON對象?如果不正確,那麼錯誤在哪裏?

感謝

+0

使用['json_decode'](http://php.net/manual/en/function.json-decode.php)PHP函數。你的代碼沒有意義,因爲你聲明瞭一個變量'encoded_send',而不是使用它。然後,您使用'JSON.stringify(jsonObjects)'而不定義'jsonObjects'。 – 2011-12-31 11:32:52

+0

'json_decode($ _ POST [ 'SEND_DATA']);'不工作 – 2011-12-31 11:33:58

+0

oupssss ...'JSON.stringify(encoded_send)' – 2011-12-31 11:35:53

回答

1

(之前,我繼續給你的函數。)
你似乎誤解JSON的目的。將數據傳輸到服務器時,不需要用JSON字符串替換數據。更簡單的方法是通過data添加參數,並通過$_POST檢索它們。

實施例:

​​

簡單的PHP例如:

<?php 
    header('Content-Type: application/json'); 
    $example = array("what" => "This"); 
    echo json_encode($example); //Echos: {"what":"This"} 
?> 

JSON應在服務器respons使用。 PHP對象可以使用json_encode進行序列化。確保在發送任何輸出之前使用header('Content-Type: application/json');

(如果你仍然想JSON編碼數據的發送之前)
使用json_decode PHP函數反序列化JSON字符串。

您的當前代碼必須修復。

var datasend = {}; 
datasend['name'] = $(".chat_username").val(); 
datasend['message'] = $(".chat_text").val(); 
var encoded_send = $.toJSON(datasend); 
$.ajax({ 
    type: "POST", 
    url: "/apps/chat_write", 
    data: {send_data: encoded_send }, 
    dataType: "json", /* Can be removed if the RESPONSE is not JSON*/ 
    success: function(response){ 
    if(response!="OK"){ 
     alert("Παρουσιάστηκε πρόβλημα.Κάντε ανανέωση την σελίδα ή προσπαθήστε ξανά αργότερα."); 
    }else{ 
     $(".chat_text").val(""); 
     $(".chat_count").val("0/100"); 
    } 
    } 
}); 
+0

順便說一句,我不認爲MIME類型必須重寫,jQuery仍然將數據編碼爲'x-www-form-urlencoded':'send_data = {json_here}'。 – 2011-12-31 11:44:02

+0

現在我藉此錯誤:'
致命錯誤:在C不能使用類型stdClass的的對象作爲數組:\ XAMPP \ htdocs中\上線APPS \聊天\ chat_write.php
' – 2011-12-31 11:48:29

+0

嘗試此PHP代碼連同我的JavaScript代碼:http://pastebin.com/NgdDxmgN – 2011-12-31 11:54:17