<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic How to read Ajax passed JSON object in Python? in Splunk Dev</title>
    <link>https://community.splunk.com/t5/Splunk-Dev/How-to-read-Ajax-passed-JSON-object-in-Python/m-p/319125#M4410</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;How to read Ajax passed JSON object in .py file? Below are my code snippets from Splunk view, web.conf and .py file.&lt;BR /&gt;
Looking for code snippet in How to read Ajax passed JSON object here????? section of my .py file&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;JavaScript:&lt;/STRONG&gt;&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;var dataVal = {'JSONObjKey': JSONObject,'SimpleString': 'String1'};
var JsonData = JSON.stringify(dataVal);
function callScript(){
             $.ajax({
                   type: "POST",
                   url: "/custom/MyApp/my_script/my_endpoint",
                   data: JsonData,
                   contentType: "application/json; charset=utf-8",
                   dataType: "json",
                   success: function(data) {
                       console.log("success returned");
                       console.log(data);
                   },
                   error: function(xhr){
            console.log("Error");
                }
             });
         }        
         callScript();
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&lt;STRONG&gt;web.conf&lt;/STRONG&gt;&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;[endpoint:my_script]
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&lt;STRONG&gt;my_script.py&lt;/STRONG&gt;&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;import logging
import cherrypy
import splunk.appserver.mrsparkle.controllers as controllers
from splunk.appserver.mrsparkle.lib.util import make_splunkhome_path
from splunk.appserver.mrsparkle.lib.decorators import expose_page

 _APPNAME = 'MyApp'
 def setup_logger(level):
  logger = logging.getLogger('splunk.appserver.%s.controllers.my_script' % _APPNAME)
  logger.propagate = False  # Prevent the log messages from being duplicated in the python.log file
  logger.setLevel(level)
  file_handler = logging.handlers.RotatingFileHandler(
      make_splunkhome_path(['var', 'log', 'splunk', 'my_script_controller.log']), maxBytes=25000000, backupCount=5)
  formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
  file_handler.setFormatter(formatter)
  logger.addHandler(file_handler)
  return logger
 logger = setup_logger(logging.DEBUG)

 class my_script(controllers.BaseController):
  @expose_page(must_login=True, methods=['POST'])
  def my_endpoint(self, **kwargs):
   cherrypy.response.headers['Content-Type'] = 'application/json'
 &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;How to read ajax passed JSON object here?????&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
 &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;kwargs['JSONObjKey'] doesn't work here&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
   return "Return JSON Object data here????"
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 26 May 2017 13:17:34 GMT</pubDate>
    <dc:creator>kasu_praveen</dc:creator>
    <dc:date>2017-05-26T13:17:34Z</dc:date>
    <item>
      <title>How to read Ajax passed JSON object in Python?</title>
      <link>https://community.splunk.com/t5/Splunk-Dev/How-to-read-Ajax-passed-JSON-object-in-Python/m-p/319125#M4410</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;How to read Ajax passed JSON object in .py file? Below are my code snippets from Splunk view, web.conf and .py file.&lt;BR /&gt;
Looking for code snippet in How to read Ajax passed JSON object here????? section of my .py file&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;JavaScript:&lt;/STRONG&gt;&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;var dataVal = {'JSONObjKey': JSONObject,'SimpleString': 'String1'};
var JsonData = JSON.stringify(dataVal);
function callScript(){
             $.ajax({
                   type: "POST",
                   url: "/custom/MyApp/my_script/my_endpoint",
                   data: JsonData,
                   contentType: "application/json; charset=utf-8",
                   dataType: "json",
                   success: function(data) {
                       console.log("success returned");
                       console.log(data);
                   },
                   error: function(xhr){
            console.log("Error");
                }
             });
         }        
         callScript();
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&lt;STRONG&gt;web.conf&lt;/STRONG&gt;&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;[endpoint:my_script]
&lt;/CODE&gt;&lt;/PRE&gt;

&lt;P&gt;&lt;STRONG&gt;my_script.py&lt;/STRONG&gt;&lt;/P&gt;

&lt;PRE&gt;&lt;CODE&gt;import logging
import cherrypy
import splunk.appserver.mrsparkle.controllers as controllers
from splunk.appserver.mrsparkle.lib.util import make_splunkhome_path
from splunk.appserver.mrsparkle.lib.decorators import expose_page

 _APPNAME = 'MyApp'
 def setup_logger(level):
  logger = logging.getLogger('splunk.appserver.%s.controllers.my_script' % _APPNAME)
  logger.propagate = False  # Prevent the log messages from being duplicated in the python.log file
  logger.setLevel(level)
  file_handler = logging.handlers.RotatingFileHandler(
      make_splunkhome_path(['var', 'log', 'splunk', 'my_script_controller.log']), maxBytes=25000000, backupCount=5)
  formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
  file_handler.setFormatter(formatter)
  logger.addHandler(file_handler)
  return logger
 logger = setup_logger(logging.DEBUG)

 class my_script(controllers.BaseController):
  @expose_page(must_login=True, methods=['POST'])
  def my_endpoint(self, **kwargs):
   cherrypy.response.headers['Content-Type'] = 'application/json'
 &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;How to read ajax passed JSON object here?????&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
 &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;kwargs['JSONObjKey'] doesn't work here&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
   return "Return JSON Object data here????"
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 26 May 2017 13:17:34 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Dev/How-to-read-Ajax-passed-JSON-object-in-Python/m-p/319125#M4410</guid>
      <dc:creator>kasu_praveen</dc:creator>
      <dc:date>2017-05-26T13:17:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to read Ajax passed JSON object in Python?</title>
      <link>https://community.splunk.com/t5/Splunk-Dev/How-to-read-Ajax-passed-JSON-object-in-Python/m-p/319126#M4411</link>
      <description>&lt;P&gt;in python you will want to &lt;CODE&gt;import json&lt;/CODE&gt; for handling json.&lt;/P&gt;

&lt;P&gt;Here's how to use the json library: &lt;A href="https://docs.python.org/2/library/json.html"&gt;https://docs.python.org/2/library/json.html&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;I would not use cherrypy here though.  cherrypy is deprecated in Splunk.&lt;/P&gt;

&lt;P&gt;GIve this a read: &lt;A href="https://conf.splunk.com/files/2016/slides/extending-splunks-rest-api-for-fun-and-profit.pdf"&gt;https://conf.splunk.com/files/2016/slides/extending-splunks-rest-api-for-fun-and-profit.pdf&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;and refer to the github link at the end of the presentation for sample code.&lt;/P&gt;</description>
      <pubDate>Fri, 26 May 2017 13:45:56 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Dev/How-to-read-Ajax-passed-JSON-object-in-Python/m-p/319126#M4411</guid>
      <dc:creator>jkat54</dc:creator>
      <dc:date>2017-05-26T13:45:56Z</dc:date>
    </item>
  </channel>
</rss>

