[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 300
  • Last Modified:

JSON.stringify problems

In the code below, I am trying to send a JSON encoded javascript object.

However, when the object is json "stringified", it removes the eventcode, price and WaitingList values.
In the JSON result (json_data), all I see is the firstname, lastname, email for each particpant that was added.

How do I prevent this from happening. The eventcode, price and WaitingList values are global for all participants.
    window.particpants = [];
    window.participants['eventcode']   = "GEVENT";
    window.participants['price']       = 99.00;
    window.participants['WaitingList'] = "";

    if(waiting_list_flag) {
      window.participants['WaitingList'] = "YES";
    } else {
      window.participants['WaitingList'] = "NO";
    }

    $('#next_btn').click(function() {
      addParticipant(); // adds the last entered participant info to the participants object
      var url = AJAX_URL_ADD
      json_data = JSON.stringify(window.participants); // json encode the participants

      $.ajax({async: false, 
              type:'POST',
              url: url, 
              data: json_data, 
              dataType: 'json', 
              contentType: "application/json; charset=utf-8", 
              success: function(data){
                if(data.result=='success') {
                  window.location = GOTO_URL;
                } else {
                  //display error
                  $('.error_message').html(data.message);
                } // if(data.result=='success')
              } // success function()
      }); // $.ajax
    }); // $('#next_btn').click

  // also called from another button click to add more participants
  function addParticipant() {
    var participant = {};
    participant.firstname   = $('#FirstName').val();
    participant.lastname    = $('#LastName').val();
    participant.email       = $('#Email').val();
    window.participants.push(participant);
  } // function addParticipant()

Open in new window

0
EddieShipman
Asked:
EddieShipman
  • 3
  • 3
1 Solution
 
leakim971PluritechnicianCommented:
Try this :


window.participants = {};
    window.participants['eventcode']   = "GEVENT";
    window.participants['price']       = 99.00;
    window.participants['WaitingList'] = "";
    window.participants['participants'] = [];

    if(waiting_list_flag) {
      window.participants['WaitingList'] = "YES";
    } else {
      window.participants['WaitingList'] = "NO";
    }

    $('#next_btn').click(function() {
      addParticipant(); // adds the last entered participant info to the participants object
      var url = AJAX_URL_ADD
      json_data = JSON.stringify(window.participants); // json encode the participants

      $.ajax({async: false, 
              type:'POST',
              url: url, 
              data: json_data, 
              dataType: 'json', 
              contentType: "application/json; charset=utf-8", 
              success: function(data){
                if(data.result=='success') {
                  window.location = GOTO_URL;
                } else {
                  //display error
                  $('.error_message').html(data.message);
                } // if(data.result=='success')
              } // success function()
      }); // $.ajax
    }); // $('#next_btn').click

  // also called from another button click to add more participants
  function addParticipant() {
    var participant = {};
    participant.firstname   = $('#FirstName').val();
    participant.lastname    = $('#LastName').val();
    participant.email       = $('#Email').val();
    window.participants.participants.push(participant);
  } // function addParticipant()

Open in new window

0
 
EddieShipmanAuthor Commented:
window.participants.participants is undefined

Open in new window

If I leave it at
window.participants.push(participant)

Open in new window

I get
window.participants.push is not a function

Open in new window

0
 
leakim971PluritechnicianCommented:
did you made a copy/cut? (check line 5)

work fine here : http://jsfiddle.net/38jAn/1/
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
EddieShipmanAuthor Commented:
Got it, missed that one. Also, modifying to this worked, is this better or should I do it like you did in the Fiddle?
    window.participants.eventcode   = "GEVENT";
    window.participants.price       = 99.00;
    window.participants.WaitingList = "";

Open in new window

0
 
leakim971PluritechnicianCommented:
no problem with this syntax, if you like it adopt it.

forexample["this-is-not-possible-with-the-other-syntax"] = 10; // you can't : forexample.this-is-not-possible-with-this-syntax = 10;

0
 
EddieShipmanAuthor Commented:
Got it, thanks.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now