2011-12-31 2 views
3

Я нашел это: http://code.google.com/p/jquery-json, плагин, который эмулирует функцию PHP json_encode.Кодировать как объект 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 объект Если это? правильно ли код, как я могу разобрать объект JSON из PHP? Если это неверно, где ошибки?

Благодаря

+0

Используйте функцию ['json_decode'] (http://php.net/manual/en/function.json-decode.php) PHP. Ваш код не имеет никакого смысла, потому что вы объявляете переменную 'encoded_send' и не используете ее. Затем вы используете 'JSON.stringify (jsonObjects)' без определения 'jsonObjects'. –

+0

'json_decode ($ _ POST ['send_data']);' не работает –

+0

oupssss ... 'JSON.stringify (encoded_send)' –

ответ

1

(прежде чем я продолжу в вашу функцию ..)
Вы, кажется, не понимают цели JSON. При передаче данных на сервер нет необходимости заменять данные строкой JSON. Более простой подход заключается в добавлении параметров через data и извлечении их через $_POST.

Пример:

$.ajax({ 
    type: "POST", 
    url: "/apps/chat_write", 
    data: { 
     name: $(".chat_username").val(), 
     message: $(".chat_text").val() 
    }, 
    dataType: "json", /* This parameter is ONLY used at the response */ 
    success: function(response){ 
     //response is a deserialized JSON string 
    } 
}); 

Простой 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

Btw, я не думаю, что MIME-тип должен быть переопределен, jQuery все равно будет кодировать данные как «x-www-form-urlencoded':' send_data = {json_here} '. –

+0

Теперь я беру эту ошибку: '
Фатальная ошибка: Невозможно использовать объект типа StdClass как массив в C: \ XAMPP \ HTDOCS \ приложения \ чат \ chat_write.php на линии
' –

+0

Попробуйте это PHP-код в сочетании с моим предлагаемым кодом JavaScript: http://pastebin.com/NgdDxmgN –

Смежные вопросы