Avatar billede davidabk Nybegynder
11. juni 2011 - 13:54 Der er 6 kommentarer og
1 løsning

Gå til ny side og send parametre med post - Jquery

Hej

Jeg er lige begyndt at kigge lidt på jquery og jeg kan slet ikke få det til at opføre sig som jeg vil!

Jeg vil gerne sende noget data med til den side som så loades.. Hvad gør jeg forkert?? - Den loader fint den nye side men sender ikke noget med!

function Go_To(Site_to_load, Parameters_to_post)
{
    $.post(Site_to_load, function(Parameters_to_post)
    {
        $(window.location).attr('href', Site_to_load);     
    });
}
Avatar billede davidabk Nybegynder
12. juni 2011 - 14:19 #1
Er det helt uforståeligt???
Avatar billede winblows Nybegynder
12. juni 2011 - 16:00 #2
Jeg vil oprette input hidden felte(r) i HTML'en og submitte siden til den ønskede URL.

<form id="form1" target="URL" method="post">
<input type="hidden" id="hiddeninput1" name="hiddeninput1" value="VALUE" />
</form>

<script>

function Go_To(Site_to_load, Parameters_to_post)
// pre: Site_to_load : string (URL)
//      Parameters_to_post : string (parametre)
// post: siden submittes
{
  document.getElementById("hiddeninput1").value=Parameters_to_post;
  document.getElementById("form1");
  document.getElementById("form1").submit();
}

</script>
Avatar billede winblows Nybegynder
12. juni 2011 - 16:02 #3
sorry,
document.getElementById("form1");
skal være:
document.getElementById("form1").target=Site_to_load;
Avatar billede davidabk Nybegynder
12. juni 2011 - 16:56 #4
Ja.. Det har jeg overvejet som en nem løsning, men det giver en "grimmere" html kode, og derfor ville jeg smide det over i en funktion!
Avatar billede winblows Nybegynder
12. juni 2011 - 17:56 #5
kode er ikke nogen ballerina, den skal virke :-)
Avatar billede andreas134 Nybegynder
12. juni 2011 - 18:55 #6
jeg tror du lidt har misforstået hvordan jQuery.post() funktionen fungere.
se dokumentationen: http://docs.jquery.com/Post

inde i function(Parameters_to_post) bliver 'Parameters_to_post' brugt som en lokal variabel til at lagre "svaret" fra din forespørgsel.
der i mod skal du lægge din data ind i parameteren før funktion()
så følgene:


$.post(Site_to_load, function(Parameters_to_post)
{
    $(window.location).attr('href', Site_to_load);     
});


laves om til:

$.post(Site_to_load, , { the_posts: Parameters_to_post}, function(response)
{
    $(window.location).attr('href', Site_to_load);
});


du kan eventuelt prøve at printe værdien af 'response'.

det er sådan at jQuery.post() funktionen virker, men du kan ikke rigtig bruge den funktion til det du gerne vil, fordi:

jQuery.post() sender data til en fil som så kan håndterer den data og sende et svar tilbage.

og hvis du så sender siden videre så kommer ingen af delene med.

(ved ikke lige om du forstod det, det var en dårlig forklaring)

men i alt fald kan den funktion ikke bruges til det du gerne vil.

winblows's forslag er LØSNINGEN på dit problem.
du kan eventuelt hvis du ikke vil se på de par ekstra html-tags, løse det med at oprette dem med javascript.
det kan du gøre med jQuerys .add() funktion.
se dokumentationen: http://api.jquery.com/add/
Avatar billede davidabk Nybegynder
13. juni 2011 - 00:53 #7
Hej Andreas 134 - jeg forstår din forklaring, og jeg havde også på fornemmelsen at Jquery post() fungerede som du forklarede.

Jeg fandt et javascript som jeg kunne tilpasse så den kunne håndtere opgaven.
Den laver faktisk et form.element og laver et textarea.element for hver parameter.
Håber at andre kan bruge det - det holder html-koden pænere ;-)

/**
*  This function creates a form element with Parameters and submit to the given URL.
*  Example: Go_To('Site_to_load.php', 'name=var1&id=var2')
*/

function Go_To(URL, Parameters)
{
    var temp = document.createElement("form");
    temp.action = URL;
    temp.method = "POST";
    temp.style.display = "none";
    var Replaced_string = Parameters.replace("&", "=");
    var Parameter_array = Replaced_string.split("=");
    // Loop through array
    for(var i = 0; i < Parameter_array.length; i++)
    {
        var Param = document.createElement("textarea");
        Param.name = Parameter_array[i];
        var i_next = i += 1;
        Param.value = Parameter_array[i_next];
        temp.appendChild(Param);
    }   
    document.body.appendChild(temp);
    temp.submit();
    return temp;
}
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