How to stop jQuery post page refresh

2020-04-12 10:12发布

问题:

I am getting data from an MySQL database through PHP. I am sending the and getting the data from PHP using jQuery. Here is the code.

$.POST("SubmitCode.php", $("#questionCodeForm").serialize(),'json').done(function(data) {});

Now the problem is that once I send this data the page refreshes. How can I stop the page refresh. If I delete 'json' then the page stops refreshing but the problem is that I want to get the json data without page refresh. How can I do this?

-------------------------------------------after edit----------------------------------------------------------------------------- Here is the updated code

$(document).ready(function() {
    initialization();

    codeSubmission();
});

function initialization() {
    $("#answerForm").hide();
}

function codeSubmission() {
  $("#submitButton").click(function(e) {
    e.preventDefault();
    $.post("SubmitCode.php", $("#questionCodeForm").serialize()).done(function(data) {
        var questionName = data.questionName,
            options = data.options,
            pollingStatus = data.pollingStatus,
            codeExist = data.codeExist;

        alert(data);
        alert(data[1]);
        alert(questionName);
        alert(options);

        if(codeExist == true) {
            $("#questionTitle").text("questionName");

            for(rowNum=1;rowNum<=5;rowNum++) {
                $("#checkbox-"+rowNum).val("Answer1");
                $("#checkbox"+rowNum+"label").text("Answer"+rowNum);
            } 

            $("#answerForm").slideDown(500);

        } else if(codeExist == false) {
            alert("This quiz code is invalid");
        }   
    },'json');  
    //return false;
  });
    //return false;
}

Now the problem is that the output of alert(questionName) is undefined. The data is passed as a string. How do I get the correct information in the correct variables?

回答1:

Try this instead: (note the placement of the callback function, and lowercase .post method)

$.post("SubmitCode.php", $("#questionCodeForm").serialize(),function(data) {
  //manipulate your data here

 },'json');

Also make sure that whatever is triggering the post isn't an actual link and if it is, you need to stop the default action from occuring. For example:

<a href="submit.php">Click here to submit</a>

javascript:

$(a).click(function(e) { 
e.preventDefault();
$.post("SubmitCode.php", $("#questionCodeForm").serialize(),function(data) {
  //manipulate your data here

 },'json');
});


回答2:

You also have to parse the json on the client side. You can do this using

obj = jQuery.parseJSON(data);