Execute include med ajax request.

Permalänk
Medlem

Execute include med ajax request.

Nu skriver jag lite på svengelska då jag är självlärd och läser engelska böcker.

Har en fullt fungerande ajaxrequest som executar php kod vid click och har ingen callback function (validerat det så det funkar). Det ända jag har problem med är att keyword include/require filnamn.php inte körs. Börjar bli tveksam på att om det ens är möjligt att byta sida på det sättet? Då det är en del nya arrays varje gång så känns det omöjligt att byta all data med en JSON. Vill helst inte använda vanliga länkar då url blir så långt.

Permalänk
Medlem

Vad menar du med nya arrays varje gång? Att hämta innehåll från en php-fil som använder require ska inte vara några problem.
Require kan inte användas för att byta sida.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Skrivet av salmanq:

Nu skriver jag lite på svengelska då jag är självlärd och läser engelska böcker.

Har en fullt fungerande ajaxrequest som executar php kod vid click och har ingen callback function (validerat det så det funkar). Det ända jag har problem med är att keyword include/require filnamn.php inte körs. Börjar bli tveksam på att om det ens är möjligt att byta sida på det sättet? Då det är en del nya arrays varje gång så känns det omöjligt att byta all data med en JSON. Vill helst inte använda vanliga länkar då url blir så långt.

include och require är php-kommandon för att inkludera en extern php-fil i den aktuella filen. Tex så brukar man samla sitt funktionsbibliotek och globala variabler i separata filer som sedan kan inkluderas på alla olika sidor i sin applikation. Och så brukar man använda en index-fil som i sin tur inkluderar en sida beroende på vilken sida användaren valt:

index.php

require("includes/settings.inc.php"); require("includes/functions.inc.php"); $page = $_GET['p']; <html> <head> </head> <body> <? if (!file_exists("$page.inc.php")) { $page = "error"; } include("pages/$page.inc.php"); ?> </body> </html>

Permalänk
Medlem

Ska försöka vara lite mer tydlig. Jag har en controller (index.php) som bl.a uppdaterar databasen och genererar nya arrays varje gång den här specifika ajax requesten körs. Meningen är då att efter att allt detta är gjort så ska en include 'phpfil.php'; köras och de nya arraysen användas till att visa nytt innehåll på sidan. Allt detta utförs förutom include.

Antar att man kan array_push() dessa arrays jag pratar om och skicka en multidimensional array med JSON. Men allt skulle bli så mycket enklare om det gick att inkludera den nya sidan bara och samtidigt använda post type.

Permalänk

Hänger inte med på vad du vill göra.
Tror det skulle bli mycket enklare för både dig och dom som försöker hjälpa om du postar din kod.

Permalänk
Medlem
Permalänk
Skrivet av salmanq:

Ser väl ut som att det borde funka. Men förstår inte riktigt vad du vill uppnå - om du vill att ajaxet ska uppdatera något på sidan måste du ju eka ut något i php-filen. Självklart kan du göra det i den filen du inkluderar (view1.php), men du har ju inte postat koden för den så jag vet inte vad den gör?

Det du ekar ut i antingen index.php eller view.php kommer ajaxet kunna fånga upp och använda för att uppdatera front-end, förslagsvis genom JSON. Men i nuläget fångar du ju inte upp det alls.

Och använd citera-knappen så blir det mycket lättare för folk att se när du har svarat

Permalänk
Medlem
Skrivet av Full Strike:

Ser väl ut som att det borde funka. Men förstår inte riktigt vad du vill uppnå - om du vill att ajaxet ska uppdatera något på sidan måste du ju eka ut något i php-filen. Självklart kan du göra det i den filen du inkluderar (view1.php), men du har ju inte postat koden för den så jag vet inte vad den gör?

Det du ekar ut i antingen index.php eller view.php kommer ajaxet kunna fånga upp och använda för att uppdatera front-end, förslagsvis genom JSON. Men i nuläget fångar du ju inte upp det alls.

Och använd citera-knappen så blir det mycket lättare för folk att se när du har svarat

Meningen är att uppdatera hela front-end utan att behöva skicka tillbaka data till ajax. Försöker skapa en länk med post metod.

Permalänk
Medlem

För att byta ut innehållet i din index.php med din ajax-request måste javascriptet ta emot ny html/text att visa på något ställe i index.php. Även om det är index.php du anropar i din ajax-request så kommer inget att hända med din nuvarande html då allt sker i en helt ny request.
För att lösa det hela måste du alltså ta emot skillnaden i en callback-funktion och byta ut html med javascrript.

$.ajax({ type: 'POST', url: '?category=' + arbitrary3, data: { "arbitrary1" : arbitrary1, "arbitrary2" : arbitrary2 }, success: function(data) { $("body").html(data); //Såhär byter du ut allt innehåll till din nya index fil }

Visa signatur

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan

Permalänk
Skrivet av salmanq:

Meningen är att uppdatera hela front-end utan att behöva skicka tillbaka data till ajax. Försöker skapa en länk med post metod.

Du kan inte uppdatera front-end i efterhand utan javascript. PHP är server-side och exekveras bara en gång - när ett ajax anropar en php-fil är det en helt egen process, där php-koden inte på något sätt kan påverka det du ser. Det du måste göra är, som ePoint skriver ovan lägga till en succcess-handler i ditt ajax som uppdaterar front-end med den data (det som ekas ut) du får från php-scriptet som anropas.

Vill du byta ut hela innehållet på sidan så kan du använda
$("body").html(data);
där data är det som php-scriptet returnerat.