Mpampinos Holmens
Mpampinos Holmens

Reputation: 1937

flask forms and javascript

hello i have the html code below

<form>
<input type="text" id="filepathz" size="40" placeholder="Spot your project files">
<input type="button" id="spotButton" value="Spot">
</form>

the javascript code

  window.onload = init;

  function init() {
          var button = document.getElementById("spotButton");
          button.onclick = handleButtonClick;
  }       

  function handleButtonClick(e) {
          var filepathz = document.getElementById("filepathz");

         var path = filepathz.value;

         if (path == "") {
                 alert("give a filepath");
         }else{
                 var url = "http://localhost:5000/tx/checkme/filepathz=" + path;
                 window.open (url,'_self',false);
         }       
 } 

and the python code on flask

def index():
        """Load start page where you select your project folder
        or load history projects from local db"""
        from txclib import get_version
        txc_version = get_version()
        prj = project.Project(path_to_tx)

        # Let's create a resource list from our config file
        res_list = []
        prev_proj = ''
        for idx, res in enumerate(prj.get_resource_list()):
                hostname = prj.get_resource_host(res)
        username, password = prj.getset_host_credentials(hostname)
        return render_template('init.html', txc_version=txc_version, username=username)

    @app.route('/tx/checkme/<filepathz>')
    def checkme(filepathz):
            filepathz = request.args.get('filepathz')
            return render_template('init.html', txc_version=filepathz)

what am i doing wrong and can't get the data from the form (filepathz) <--- i get None

Upvotes: 1

Views: 4063

Answers (1)

Arsh Singh
Arsh Singh

Reputation: 2116

You're not passing the variable correctly. There are two ways to pass the variable:

1) Pass it via get method:

http://localhost:5000/tx/checkme/?filepathz=" + path; (Note the '?')

Currently you are trying to get the variable from request.args but not passing it in the request, that's why you get none.

2) Get it from the url with flask's url structure:

Do this in JS : http://localhost:5000/tx/checkme/" + path

And in you view :

@app.route('/tx/checkme/<filepathz>')
def checkme(filepathz):
      return render_template('init.html', txc_version=filepathz) # You can use this variable directly since you got it as a function arguement.

Upvotes: 3

Related Questions