Как я могу отправить эту форму, используя json, на другую страницу и проанализировать json в PHP или jQuery? - PullRequest
0 голосов
/ 11 ноября 2010

Я знаю, что это похоже на то, что я должен был немедленно найти один пример, который просто объяснил эту концепцию, и я не могу найти правильный. Примеры в учебных руководствах используют flickr в качестве URL-адреса запроса, и я дошел до этого. Я пытаюсь обработать очень сложную форму с четырьмя различными блоками информации под одним большим багом информации. Я думаю, что JSON будет хорошим выбором. Итак, я нашел пример, который показывает мне, как сериализовать данные следующим образом:

    $.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

Что здорово! Через оповещение я вижу структуру json и элементы формы. Поэтому я думал, что все остальное будет просто. И здесь я бьюсь головой, потому что я не могу найти один простой пример, КАК ОТПРАВИТЬ или ЗАПРОСИТЬ эти сериализованные данные со своей страницы обработки, которая должна распечатать, организовать и вычислить значения того, что было отправлено.

Итак, то, что я сделал дальше (и я уверен, что это неправильно, но, возможно, это проиллюстрирует, насколько я новичок в этом и с чего мне нужно начать в моем понимании этого), было записать сериализованные данные в скрытые поле вроде так:

$('form').submit(function() {
    var field = '<input type="hidden" name="jsonval" value="' + $.toJSON($('form').serializeObject()) + '">';
   // alert($.toJSON($('form').serializeObject()));

    alert(field);
    document.write(field);
    return true;
});

Я использую метод GET в форме, и когда он выдает предупреждение, он выглядит хорошо, затем он переходит на следующую страницу. Только того скрытого варианта, который я выписал, там нет. Остальные значения формы Я просто ХОЧУ увидеть как-то проклятый json, чтобы потом использовать json.parse или что-то еще, что мне нужно использовать в PHP для его декодирования.

Вот полный код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<html lang="en"> 
<head> 
    <title>Attendees</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://jquery-json.googlecode.com/files/jquery.json-1.3.min.js"></script> 
</head> 
<body> 

<form action="receive.php" method="get"> 
  <p><br/> 
    First Name:<input type="text" name="Fname" maxlength="12" size="12"/> <br/> 
    Last Name:<input type="text" name="Lname" maxlength="36" size="12"/> <br/> 
    Preconference:<br/> 
    A:<input type="radio" name="gender" value="A"/><br/> 
    B:<input type="radio" name="gender" value="B"/><br/> 
    What days:<br/> 
    ConfA:
  <input type="checkbox" name="conf[]" value="ConfA"/><br/> 
    ConfB:
  <input type="checkbox" name="conf[]" value="ConfB"/><br/> 
    ConfC:
  <input type="checkbox" name="conf[]" value="ConfC"/>
  </p>
  <p><br/>
    <input name="quote" type="text" value="Enter your meal preference" size="20">
  </p>
  <p><br/> 
    Select a role:<br/> 
    <select name="education">
      <option value="decision">Decision Maker</option>
      <option value="person">Person</option>
      <option value="fcg">Family</option>
    </select>
  </p>
  <p><br/> 
    Select your educational credits:<br/> 
    <select size="3" name="edu">
      <option value="nursing">Nursing</option>
      <option value="welding">Welding</option>
      <option value="case">Case Managers</option>
    </select> 
  </p>
  <hr>
      First Name:<input type="text" name="Fname2" maxlength="12" size="12"/> <br/> 
    Last Name:<input type="text" name="Lname2" maxlength="36" size="12"/> <br/> 
    Preconference:<br/> 
    A:<input type="radio" name="gender" value="A2"/><br/> 
    B:<input type="radio" name="gender" value="B2"/><br/> 
    What days:<br/> 
    ConfA:
  <input type="checkbox" name="conf[]" value="ConfA2"/><br/> 
    ConfB:
  <input type="checkbox" name="conf[]" value="ConfB2"/><br/> 
    ConfC:
  <input type="checkbox" name="conf[]" value="ConfC2"/>
  </p>
  <p><br/>
    <input name="quote2" type="text" value="Enter your meal preference" size="20">
  </p>
  <p><br/> 
    Select a role:<br/> 
    <select name="education2">
      <option value="decision2">Decision Maker</option>
      <option value="person2">Person</option>
      <option value="fcg2">Family</option>
    </select>
  </p>
  <p><br/> 
    Select your educational credits:<br/> 
    <select size="3" name="edu2">
      <option value="nursing2">Nursing</option>
      <option value="weld2">Welding</option>
      <option value="case2">Case Managers</option>
    </select> 
  </p>


<script type="text/javascript"> 

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$('form').submit(function() {
    var field = '<input type="hidden" name="jsonval" value="' + $.toJSON($('form').serializeObject()) + '">';
   // alert($.toJSON($('form').serializeObject()));

    alert(field);
    document.write(field);
    return true;
});

</script> 
<p><input type="submit" /></p> 
</form> 
</body> 
</html> 

Как мне заставить его просто каким-то образом общаться со страницей receive.php? Спасибо, что задали такой вопрос новичку. Я действительно некоторое время искал, но не могу понять, нужно ли мне использовать фреймворк или есть хороший простой способ ... Было много разных примеров, которые были более сложными, чем казалось, что эта проблема вызывала для.

1 Ответ

1 голос
/ 11 ноября 2010

Попробуйте поместить туда скрытый ввод, чтобы начать с

<input type="hidden" name="jsonval" id="jsonval" value="" /> 
<!-- also make sure to end your input tags with a "/" -->

А затем в вашем javascript просто выполните ...

var j = $.toJSON($('form').serializeObject());

//You might need this if the quotes are making things annoying
//j = encodeURIComponent(j);

document.getElementById('jsonval').value = j;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...