2012-02-14 4 views
1

Я использую нокаут, и это мой Аякса код:PHP получить JSON

save: function() { 
       $.ajax({ 
        url:"http://localhost/loyalty/welcome/json/", 
        type: "post", 
        data: ko.toJSON(this), 
        contentType: "application/json", 
        success: function (result) { alert(result) } 
       }); 
      } 

Использования поджигатель я могу видеть, что сообщение посылается JSON правильно, проблема заключается в том, как получить его на PHP, что имя того, что было отправлено?

Я использую CodeIgniter

Заранее спасибо за любую помощь.

ответ

0

Решение принять

contentType: "application/json", 

из Ajax вызова.

=)

2

Он будет в переменной $_POST['key'], где 'key' - это ключевые значения в объекте JSON.

+0

Привет ... Я получаю эту JSON: [{ "Имя": "Йоа £ о", "isOnTwitter": ложные}] и с помощью $ _POST [ 'имя'] ничего не возвращает , – Gerep

+1

Ваш JSON находится в массиве. Вы хотите, чтобы это было на одном объекте с только '{}' вокруг него. В противном случае это массив, и вам нужно будет дать ему имя. Что-то вроде '{" jsonval ": ko.toJSON (this)}' – Ktash

+0

Данные формы не передаются с использованием json. У HTTP есть свой формат для передачи данных. Использовать form.serialize() –

0
save: function() { 
      $.ajax({ 
       url:"http://localhost/loyalty/welcome/json/", 
       type: "post", 
       data: $(this).serialize()/*Where this is an instance of the form change with appropriate selector such as #loginForm*/, 
       contentType: "application/json", 
       success: function (result) { alert(result) } 
      }); 
     } 

Использование $ _POST в файле PHP, чтобы получить данные Я assumin вы используете JQuery, а также и $ есть функция JQuery. Теперь эти данные доступны в post superglobal. NB: вам не нужно использовать json для отправки данных через функцию ajax. Данные передаются в формате сериализованного массива, таком как: field1 = value1 & field2 = value2 и т. Д.

Если вы должны использовать json, что, откровенно говоря, не нужно, используйте данные: «json =» + ko.toJSON (форма)

и на стороне сервера data = json_decode ($ _ POST ['json']);

2
**This is what exactly the way to post as json way** 

//index.php 
    $(document).ready(function(){ 
       obj = {} 
       obj.name = "sam" 
       obj.value = "12345" 
         $.ajax({ 
           url:"json.php", 
           type: "post", 
           data :obj, 
           dataType:"json", 
           success: function (result) { 
            alert(result.name); 
           } 
          }); 
      }); 

    //json.php ,, the posted data is received as array ,, so we need to convert it as //json_encode to make as JSON again 

    <?php 
    $jsonReceiveData = json_encode($_POST); 
    echo $jsonReceiveData; 
    ?>