2014-09-16 7 views
2

Я нашел бесчисленные учебники по извлечению данных из json-файлов с помощью jQuery и ajax, но ни один из них не содержит Данные POST в файл json. Если кто-то может показать мне или отправить мне небольшой сценарий о том, как это сделать, это было бы здорово. Я искал всюду о том, как это сделать, и не повезло. Я видел примеры людей, которые это делают, но они, похоже, забывают делиться важной информацией, которую я не вижу. У меня нет проблем с извлечением данных json-файлов с помощью ajax. Если кто-то может сказать мне, что я что-то забываю или что-то не так, это было бы здорово. Я был бы очень признателен, если бы кто-нибудь мог отправить мне рабочий файл, чтобы я мог перепроектировать ir и понять, как это сделать. Я хочу отправить значения из $ firstName и $ caption в json-файл. Я знаю, что это может показаться глупым для других, но я устал от всех поисков и не получал прямых ответов.Как отправить данные в json-файл с помощью jquery/ajax

Вот что у меня есть.

 getImages: function(){ 
     var $firstName = $(".name"), 
      $caption = $(".caption"); 
     var object = { 
      name: $firstName.val(), 
      caption: $caption.val() 
     } 
     $.ajax({ 
      type: 'POST', 
      data: object, 
      url: 'images.json', 
      success: function(data){ 
       console.log("KILLER"); 
       var count = 0; 
       $.each(data, function(i, imgSlide){ 
        count ++; 
        //console.log(result.sliderImages[i].url[0].thumb); 
        var imageEl = "<img src='"+imgSlide.url[0].thumb+"' alt='"+imgSlide.name+"'>"; 
        var slide = "<li class='imageSlide' data-id='"+count+"'>"+imageEl+"</li>"; 
        $("ul.imageGallery").append(slide).fadeIn(); 
       }); 
      }, 
      error: function(){ 
       console.log("Abort"); 
      }, 
      timeout: 3000, 
      beforeSend: function(){ 

      }, 
      complete: function(){ 

      } 
     }); 

    } 

и вот мой JSON файл

[{ 
     "name": "Bootcamp", 
     "url": [{ 
     "thumb": "img/ill-bootcamp.jpg", 
     "med": "img/ill-bootcamp.jpg", 
     "large": "img/ill-bootcamp.jpg" 
      }], 
     "caption": "Lifetime Fitness", 
     "ID": "" 
    }, 
    { 
     "name": "Pinup Girl", 
     "url": [{ 
      "thumb": "img/ill-pinup.jpg", 
      "med": "img/ill-pinup.jpg", 
      "large": "img/ill-pinup.jpg" 
      }], 
     "caption": "Illustration", 
     "ID": "" 
    }, 
    { 
     "name": "SixDitch", 
     "url": [{ 
      "thumb": "img/web-sixditch.jpg", 
      "med": "img/web-sixditch.jpg", 
      "large": "img/web-sixditch.jpg" 
      }], 
     "caption": "SD MotorSports", 
     "ID": "" 
    }] 
+1

0 Вы имеете в виду, разместить данные и _save_ в файл JSON? Для этого вам понадобится серверный скриптовый язык, например php. – giorgio

+1

не может публиковать в неисполняемом текстовом файле – charlietfl

+0

Это то, что я думал, я просто не мог получить прямой ответ на него. Дошел до того момента, когда я был готов задавать глупый вопрос и перебирать его. Спасибо. запутался, когда я увидел это видео о POSTING с ajax и json, но он не упомянул о роли рабочего php в своем видео. –

ответ

4

Так что вам нужно будет использовать серверный язык сценариев. В этом случае мы будем использовать PHP.

После определения вашего объекта json вы превращаете его в строку и отправляете в файл php через сообщение. Оттуда PHP возьмет его и закодирует его как объект JSON. Этот json-объект будет сохранен в файл с именем my_json_data.json с помощью php-функции file_put_contents(). Если вы хотите добавить новое содержание, вместо того, чтобы заменить старый использовать функцию вроде этого:

file_put_content('my_json_data.json', $jsonObject, FILE_APPEND); 

JavaSrcipt:

var $firstName = $(".name"), 
    $caption = $(".caption"); 
var object = { 
    name: $firstName.val(), 
    caption: $caption.val() 
} 

var params = JSON.stringify(object); 

$.ajax({ 
    type: 'POST', 
    data: params, 
    url: 'save_to_json.php', 
    success: function(data){ 
     // do something on success 
    }, 
    error: function(){ 
     // do something on error 
    } 
}); 

PHP (save_to_json.php):

if (!isset($_POST['params']) && !empty($_POST['params'])) { 
     $params = $_POST['params']; 

     $jsonObject = json_encode($params); 
     file_put_contents('my_json_data.json', $jsonObject); 
    } 

Надеюсь, я ничего не пропустил. Удачи.

+0

Спасибо, что нашли время, чтобы помочь мне. Я был не уверен, что вам нужен php для этого процесса, и теперь я знаю, что вам это нужно. Глупый вопрос на моей стороне, но рад, что я наконец спросил. –

+0

Я рад, что помог. Пожалуйста, проверьте этот ответ как принятый, если он решил вашу проблему :) –

+0

@HristoEnev Я попробовал ваше решение и для своей проблемы, и он работает. Однако при записи в json-файл есть пробелы и \ \ символы. Как бороться с этим? Кажется, что он не в правильном формате json. –

2

Это было немного неясно ...
на стороне клиента языки не в состоянии писать или редактировать что-то на сервере
с помощью AJAX (с или без JQuery), вы только способны считывать данные или отправить их
, так что вы можете передать свои данные в файл php, а затем выполнить то, что вы хотите сделать, по php.
здесь учебник для работы с файлами в PHP
http://www.w3schools.com/php/php_file_open.asp
и вот еще один для получения передаваемых данных с помощью AJAX в PHP файле
http://www.w3schools.com/php/php_superglobals.asp
посмотреть на $ _GET, $ _POST, $ _REQUEST
Удача

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