7

I am trying to send post data from from with empty action and send the info with javascript to the file that must handle the post information.

Here is my code:

<HTML>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
            <script>    
    function post_to_url(path, params, method) {
        method = method || "post";

        var form = document.createElement("form");

        form._submit_function_ = form.submit;

        form.setAttribute("method", method);
        form.setAttribute("action", path);

        for(var key in params) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
        }

        document.body.appendChild(form);
        form._submit_function_();
    }
    post_to_url("./postinfo.php", { submit: "submit" } );
        </script>   
<form method="post" onsubmit="return post_to_url()">
<input type="text" name="ime">
<input type="submit" id="submit" name="submit" value="Send">
</form>

So how i can send the post data to postinfo.php with javascript with empty action in my html form?

Thanks in advance!

1
  • In your code you've got 2 calls to post_to_url - one that happens after you define the function and one that happens when the form is submitted. I suspect this might be causing problems. Commented Oct 20, 2013 at 13:24

5 Answers 5

11

You're quite lucky because there's a JQuery function called "Ajax" which handles this for you!

All you need to do is call JQuery, and use code like this:

$('#form_id').on('submit', function(e){
    e.preventDefault();
    $.ajax({
       type: "POST",
       url: "/postinfo.php",
       data: $(this).serialize(),
       success: function() {
         alert('success');
       }
    });
});
Sign up to request clarification or add additional context in comments.

13 Comments

I have tried but it's not redirecting me to postinfo.php like with action="postinfo.php" in html form. Also it's not giving the success alert. I pasted exactly your code in <script></script> tags before my post form and i added id="form_id" to my form. Can you please take my code and change it how it will works and show me?
You haven't got JQuery installed - try adding this line to your <head> tag too: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
Furthermore, the point of asynchronous form submission isn't to redirect you; it's to perform a background task. If you wanted a redirect, why don't you just submit the form without any JS?
More specifically, I think JSFiddle got denied, so why not try the code I made on your page to see if it's okay?
lol okay - I hope it works for you now :) Considering my code actually works, would you be kind enough to upvote & accept answer?
|
1
function post_to_url(path, params, method) {
    method = method || "post";

    var form = document.createElement("form");


   _submit_function_ = form.submit;
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);

        form.appendChild(hiddenField);
    }

    document.body.appendChild(form);
    form._submit_function_();
}
post_to_url("./postinfo.php", { submit: "submit" } );

change to

post_to_url("/postinfo.php", { submit: "submit" } );

Comments

0

Try this code.

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<script type="text/javascript">
    function validate() {
        var ra = document.getElementById("uname").value;
        var rag = document.getElementById("pwd").value;
        $.ajax({
       type: "POST",
        url: "/login",
            contentType: "application/json",
         dataType: 'json',
       data:JSON.stringify({
           username:ra,
           password:rag
       }),
       success: function() {
         alert('success');
       }
    });
        console.log(ra, rag)

    }
</script>
<html>
<form name="myform">
<p>ENTER USER NAME <input id="uname" type="text" name="username"></p>

    <p>ENTER PASSWORD <input type="password" id="pwd" name="pwd"></p>
<input type="button" value="Check In" name="Submit" onclick= "validate()">


</form>
</html>

Comments

0
<html>
<form action="{{ url_for('details') }}" method="post">
<p>ENTER NAME<input id="uname" type="text" name="username"></p>

    <p>ENTER DESIGNATION<input type="text" id="pwd" name="pwd"></p>
    <!--<P>ENTER EMAIL-ID</EMAIL-ID><input id="email" type="text" name="email-id"></P>-->
<input type="submit" value="Submit" name="Submit">


</form>
</html>`

Comments

-3
 __author__ = 'raghavendra'
from flask import Flask, render_template, request, jsonify
import os
import sys
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
# sys.path.append(('/path/to/django/project'))
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('temp.html')

@app.route('/save',methods=['GET','POST'])
def details():

    a = request.form.get('username')
    b = request.form.get('pwd')
    print a, b

if __name__ == '__main__':
    app.run()

1 Comment

Is this using a plugin? Is this even JS?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.