Avatar billede Monkeybrain Juniormester
11. januar 2014 - 12:08 Der er 8 kommentarer og
1 løsning

Jquery vil ikke køre igennem

Hej

Når jeg submitter følgende script får jeg kun resultatet i URL med "?idate=asdasd&fdate=sad" og det er som om den ikke vil gennemløbe mit jquery script..

Nogle der kan hjælpe?

<script src="jquery-1.10.2.min.js"></script>
<script>

var submit_button = $('#submit_button');

submit_button.click(function() {

    var start_date = $('firstdate').val();
    var end_date = $('seconddate').val();

    var data = 'start_date=' + start_date + '&end_date=' + end_date;

    var update_div = $('#update_div');

    $.ajax({
        type: 'GET',
        url: 'proces.asp',
        data: data, 
        success:function(html){
          update_div.html(html);
        }
    });
});

</script>
</head>

<body>

<form id="my_form">
    Start date: <br/> <input name="idate" id="firstdate" type="text" /><br />
    End date: <br /> <input name="fdate" id="seconddate" type="text" /><br />
    <input id="submit_button" type="submit" value="Submit">
</form>
<div id="update_div"></div>
Avatar billede Slater Ekspert
11. januar 2014 - 12:17 #1
Du prøver at få den til at udføre et AJAX-kald i samme øjeblik som formen submitter og dermed skifter side?

Jeg ved faktisk ikke om det er meningen ifølge standarden eller ej, men det er også min erfaring er AJAX-kald der bliver smidt lige før sideskift ikke gennemføres.

Normalt er det bedst at nøjes med en af delene, men hvis du absolut vil have begge udført, kan du smide funktionen på submit i stedet for click, smide en return false tilbage så formen ikke submitter, vente på at AJAX-kaldet er færdigt og så submitte formen.
Avatar billede Monkeybrain Juniormester
11. januar 2014 - 12:24 #2
Ideen var jo at den IKKE skulle opdatere siden men tilføje data i en database ved hjælp af AJAX-kaldet. Så den skal ikke både submitte og gennemløbe AJAX kaldet.

Jeg er ret ny i det, så kunne give mig et kodningseksempel?
Avatar billede Monkeybrain Juniormester
11. januar 2014 - 12:50 #3
Efter lidt googlen frem og tilbage fandt jeg frem til denne her..

Så gav det lidt mening..

<form name="ajaxform" id="ajaxform" action="proces.asp" method="POST">
    First Name: <br/><input type="text" name="fname" value =""/> <br/>
    Last Name: <br/><input type="text" name="lname" value ="" /> <br/>
</form>
<input type="button"  id="post" value="Submit" />
<div id="msg"></div>

<script>
$(document).ready(function()
{

$("#post").click(function()
{
    $("#ajaxform").submit(function(e)
    {
        $("#msg").html("<img src='loading.gif'/>");
        var postData = $(this).serializeArray();
        var formURL = $(this).attr("action");
        $.ajax(
        {
            url : formURL,
            type: "POST",
            data : postData,
            success:function(data, textStatus, jqXHR)
            {
                $("#msg").html(''+data+'');

            },
            error: function(jqXHR, textStatus, errorThrown)
            {
                $("#msg").html('textStatus='+textStatus+', errorThrown='+errorThrown+'');
            }
        });
        e.preventDefault();
    });
       
    $("#ajaxform").submit();
});

});
</script>
Avatar billede Slater Ekspert
11. januar 2014 - 12:57 #4
Ah, du ville bare ikke have den til at submitte formen. Den del er let nok. Er du tilfreds med hvad du har fundet?
Avatar billede Monkeybrain Juniormester
11. januar 2014 - 13:03 #5
Indtil videre er jeg da tilfreds, men jeg er altid åben for fif.. man kan altid lære noget nyt..
Avatar billede Monkeybrain Juniormester
07. februar 2014 - 23:52 #6
Smid et svar..
Avatar billede Slater Ekspert
08. februar 2014 - 08:47 #7
Ah, de point må være til dig selv, jeg nåede ikke reelt at hjælpe med noget :)
Avatar billede HBP2 Praktikant
13. februar 2014 - 23:24 #8
Jeg vil da gerne komme et fif eller to...

Har du virkelig bruge for at håndtere fejl på den måde? Følgende er lidt enklere: erstat $.ajax() kaldet med:

  $.post(formURL, postData, function(reply) {
    if (reply == 'OK') { // eller hvad formURL nu end returnerer
    } else {
    }
  });

Men det kræver at du kan detektere fejl udfra hvad formURL returnerer.

Det virker osse lidt overflødigt at bruge 'click' eventen til at submitte en form, og så bruge 'submit' eventen til at kalde ajax. Hvorfor ikke bare bruge:

  $.('#post').click(function() {
    $.post(formURL, ...);
  });

Altså skille dig af med hele submit leddet.
Avatar billede Monkeybrain Juniormester
13. august 2014 - 22:05 #9
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester