Loading ...
Sorry, an error occurred while loading the content.

json.parse returns false or error with valid strings on server-side JS

Expand Messages
  • dnc_octopus
    Hi. I m trying to use json.parse on server-side javascript under IIS. This gives errors or returns false with perfectly good json strings. The process is to
    Message 1 of 5 , Apr 5, 2006
    • 0 Attachment
      Hi.

      I'm trying to use json.parse on server-side javascript under IIS.
      This gives errors or returns false with "perfectly good" json strings.

      The process is to send a json.stringified text via ajax to a asp page.
      This in turn has an include of json.asp (with just <% %> added).

      I get the stringified text and pass it to JSON.parse. False is
      returned or an error saying the object does not support this method.

      Am I doing something wrong or json.js simply cannot by used by
      server-side IIS JScript?

      Thanks,
      Duarte
    • Lindsay
      ... Post some json that fails and you source that calls the parser. -- Lindsay
      Message 2 of 5 , Apr 5, 2006
      • 0 Attachment
        dnc_octopus wrote:
        > Hi.
        >
        >
        > I get the stringified text and pass it to JSON.parse. False is
        > returned or an error saying the object does not support this method.
        >

        Post some json that fails and you source that calls the parser.


        --
        Lindsay
      • dnc_octopus
        ... Ok. I build an object like this on the client side just for testing: function fazJSON() { var mObj = new Object; mObj.Time = new Date().getTime();
        Message 3 of 5 , Apr 6, 2006
        • 0 Attachment
          --- In json@yahoogroups.com, Lindsay <lindsay@...> wrote:
          >
          > dnc_octopus wrote:
          > > Hi.
          > >
          > >
          > > I get the stringified text and pass it to JSON.parse. False is
          > > returned or an error saying the object does not support this method.
          > >
          >
          > Post some json that fails and you source that calls the parser.
          >
          >
          > --
          > Lindsay
          >

          Ok.
          I build an object like this on the client side just for testing:
          function fazJSON()
          {
          var mObj = new Object;
          mObj.Time = new Date().getTime();
          mObj.Data = new Date().toUTCString();
          return JSON.stringify(mObj);
          }

          Then I pass this object to AJAX.Request (from prototype lib):
          new Ajax.Request ('teste.asp',
          {
          method: 'get',
          parameters: 'pedido=' + objJSN,
          onSuccess: procResp,
          onFailure: procErro
          }
          );


          On the server I get the request using the QueryString, and pass it to
          JSON.parse:

          strReq = Request.QueryString("pedido");
          respObj = JSON.parse(strReq);
          if(respObj == false) {
          Response.Write('JSON returned False');
          Response.End;
          }

          The following are examples of json strings (produced by JSON) that
          return false from JSON.parse on the server:
          {"Time":1144349903406,"Data":"Thu, 06 Apr 2006 18:58:23 GMT"}
          {"Data":"Thu, 06 Apr 2006 19:05:50 GMT"}
          {"url":{"hash":"","host":"dnc1","hostname":"dnc1","href":"http://dnc1/evsig2/teste.html","pathname":"/evsig2/teste.html","port":"","protocol":"http:","search":""}}

          But if I eval the strings it's ok.

          Also, a last detail. On the server page I use:
          <%@ language="javascript"%>
          <!--#include virtual="/evsig2/server/json.asp"-->
          <%
          ...rest of the program goes here...
          %>

          If there's any other info that's relevant just let me know.
          Duarte
        • Mark Ingalls
          I don’t see where you are calling fazJSON to stringify the object, but I’ll assume that objJSN is the stringified version of an object. I had to wrap the
          Message 4 of 5 , Apr 10, 2006
          • 0 Attachment
            I don’t see where you are calling fazJSON to stringify the object, but I’ll
            assume that objJSN is the stringified version of an object.



            I had to wrap the stringified object in a call to encodeURIComponent to get
            the object roundtrip successfully. YMMV



            I have a working example that uses two .asp pages and some supporting js
            files. If you’d like them, please let me know and I’ll send them.



            Thanks,

            Mark



            _____

            Original message:

            Ok.
            I build an object like this on the client side just for testing:
            function fazJSON()
            {
            var mObj = new Object;
            mObj.Time = new Date().getTime();
            mObj.Data = new Date().toUTCString();
            return JSON.stringify(mObj);
            }

            Then I pass this object to AJAX.Request (from prototype lib):
            new Ajax.Request ('teste.asp',
            {
            method: 'get',
            parameters: 'pedido=' + objJSN,
            onSuccess: procResp,
            onFailure: procErro
            }
            );


            On the server I get the request using the QueryString, and pass it to
            JSON.parse:

            strReq = Request.QueryString("pedido");
            respObj = JSON.parse(strReq);
            if(respObj == false) {
            Response.Write('JSON returned False');
            Response.End;
            }

            The following are examples of json strings (produced by JSON) that
            return false from JSON.parse on the server:
            {"Time":1144349903406,"Data":"Thu, 06 Apr 2006 18:58:23 GMT"}
            {"Data":"Thu, 06 Apr 2006 19:05:50 GMT"}
            {"url":{"hash":"","host":"dnc1","hostname":"dnc1","href":"http://dnc1/evsig2
            /teste.html","pathname":"/evsig2/teste.html","port":"","protocol":"http:","s
            earch":""}}

            But if I eval the strings it's ok.

            Also, a last detail. On the server page I use:
            <%@ language="javascript"%>
            <!--#include virtual="/evsig2/server/json.asp"-->
            <%
            ..rest of the program goes here...
            %>

            If there's any other info that's relevant just let me know.
            Duarte




            _____



            [Non-text portions of this message have been removed]
          • dnc_octopus
            Mark, Your assumption is correct. I ll try encodeURIComponent before using parse and see what happens. Thanks for your help! Duarte ... but I ll ... to get ...
            Message 5 of 5 , Apr 14, 2006
            • 0 Attachment
              Mark,

              Your assumption is correct.

              I'll try encodeURIComponent before using parse and see what happens.

              Thanks for your help!
              Duarte

              --- In json@yahoogroups.com, "Mark Ingalls" <mark_ingalls@...> wrote:
              >
              > I don't see where you are calling fazJSON to stringify the object,
              but I'll
              > assume that objJSN is the stringified version of an object.
              >
              >
              >
              > I had to wrap the stringified object in a call to encodeURIComponent
              to get
              > the object roundtrip successfully. YMMV
              >
              >
              >
              > I have a working example that uses two .asp pages and some supporting js
              > files. If you'd like them, please let me know and I'll send them.
              >
              >
              >
              > Thanks,
              >
              > Mark
              >
              >
              >
              > _____
              >
              > Original message:
              >
              > Ok.
              > I build an object like this on the client side just for testing:
              > function fazJSON()
              > {
              > var mObj = new Object;
              > mObj.Time = new Date().getTime();
              > mObj.Data = new Date().toUTCString();
              > return JSON.stringify(mObj);
              > }
              >
              > Then I pass this object to AJAX.Request (from prototype lib):
              > new Ajax.Request ('teste.asp',
              > {
              > method: 'get',
              > parameters: 'pedido=' + objJSN,
              > onSuccess: procResp,
              > onFailure: procErro
              > }
              > );
              >
              >
              > On the server I get the request using the QueryString, and pass it to
              > JSON.parse:
              >
              > strReq = Request.QueryString("pedido");
              > respObj = JSON.parse(strReq);
              > if(respObj == false) {
              > Response.Write('JSON returned False');
              > Response.End;
              > }
              >
              > The following are examples of json strings (produced by JSON) that
              > return false from JSON.parse on the server:
              > {"Time":1144349903406,"Data":"Thu, 06 Apr 2006 18:58:23 GMT"}
              > {"Data":"Thu, 06 Apr 2006 19:05:50 GMT"}
              >
              {"url":{"hash":"","host":"dnc1","hostname":"dnc1","href":"http://dnc1/evsig2
              >
              /teste.html","pathname":"/evsig2/teste.html","port":"","protocol":"http:","s
              > earch":""}}
              >
              > But if I eval the strings it's ok.
              >
              > Also, a last detail. On the server page I use:
              > <%@ language="javascript"%>
              > <!--#include virtual="/evsig2/server/json.asp"-->
              > <%
              > ..rest of the program goes here...
              > %>
              >
              > If there's any other info that's relevant just let me know.
              > Duarte
              >
              >
              >
              >
              > _____
              >
              >
              >
              > [Non-text portions of this message have been removed]
              >
            Your message has been successfully submitted and would be delivered to recipients shortly.