Avatar billede bjering Nybegynder
05. maj 2016 - 12:14 Der er 11 kommentarer

Overflytte PHP array med Ajax til inkluderet side.

Hej Eksperter, nu har jeg prøvet og prøvet, kan bare ikke få det til at virke.

Har en index.php side, hvor jeg har en Array $res
Har en data.php side, hvor den skal overføres til.

den vil jeg gerne have overført her fra index.php

var searchid = $(this).val();
var dataToSend = {'search' : searchid} ;

if(searchid!='')
{
    $.ajax({
    type: "POST",
    url: "data.php",
    data: dataToSend,
    cache: false,
    success: function(html)
    {
    $("#result").html(html).show();
    }
    });
}return false;   
});

I min data.php side kan jeg fint få $q=$_POST['search']; data ud, men har prøvet 1000 ting fra JSON til alt muligt, kan bare ikke få lov til at lave en

foreach ($res->products as &$text)
{
.....
}

i min data side, hvis jeg loader min array på data siden direkte fra API, så virker det, men er mega langsom da den skal lave udtræk hver gang jeg ændrer en bogstav i søgningen.

Hvordan får jeg bedst min array med over til PHP siden data?
Avatar billede olsensweb.dk Ekspert
05. maj 2016 - 12:30 #2
JSON er det rigtige !!

hvis det skal fra PHP til js/jquery skal det json incodes
http://php.net/manual/en/function.json-encode.php

og så skal du parse json med jquery
http://api.jquery.com/jquery.parsejson/

du kan også bruge forfatet json i ajax
http://api.jquery.com/jquery.getjson/
Avatar billede bjering Nybegynder
05. maj 2016 - 12:53 #3
Kan bare ikke få det til at virke...
index.php

$(".search").keyup(function()
{
var searchid = $(this).val();
var dataToSend = {'search' : searchid, 'data' : <?php echo json_encode($res); ?> } ;

if(searchid!='')
{
    $.ajax({
    type: "POST",
    url: "data.php",
    data: dataToSend,
    dataType: 'json',
    cache: false,
    success: function(html)
    {
    $("#result").html(html).show();
    }
    });
}return false;   
});

Korrekt?

if($_POST)
{
$q=$_POST['search'];
$res=jQuery.parseJSON($_POST['res']);

Hvordan får jeg så data ud på data.php siden? for det virker ikke sådan.

Er rimelig ny inden for JSON og alt det, har prøvet 1000 eksempler på nettet og kan bare ikke få det til at virke
Avatar billede bjering Nybegynder
05. maj 2016 - 12:53 #4
$res=jQuery.parseJSON($_POST['data']);
mente jeg self.
Avatar billede bjering Nybegynder
05. maj 2016 - 14:01 #5
Nogen der kan skrive sådan cirka hvad jeg skal skrive i de 2 filer?
Ville hjælpe rigtig meget
Avatar billede jakobdo Ekspert
05. maj 2016 - 17:03 #6
Tror vi med fordel kan starte helt forfra.

På din index.php.
Jeg gætter på du har en form eller button, som skal trigge at noget data skal sendes til data.php, er det ikke korrekt?

Start med at vis din form og din kode?
Avatar billede bjering Nybegynder
05. maj 2016 - 17:15 #7
Du kan hente filerne her, har fjernet API nøglen, men håber du kan klare den uden.

http://www.elteq.dk/api.rar
Avatar billede olsensweb.dk Ekspert
05. maj 2016 - 22:25 #8
her er lige lidt at læse
https://www.billy.dk/api/#code-examples

det er formindelig denne du anvender
https://github.com/billysbilling/whmcs2billysbilling
https://github.com/billysbilling/whmcs2billysbilling/blob/master/BillysBilling/v2class.php


det er ikke særlig god praksis at retunerer HTML fra serveren til AJAX, du vil gøre det nemmere for dig selv, ved kun at retunerer json encodet data fra varedata.php, og så lave alt formateringen clientside
en side effekt er så at det bliver mere effektivt, da serveren ikke skal bruge tid på at formatere

dvs alt det der med tabellen skal laves clientside
BillyClient med key skal ligge i varedata.php


tror også du skal kigge på denne søgning
https://www.google.dk/search?q=jquery+autocomplete+php+json+example
Avatar billede bjering Nybegynder
05. maj 2016 - 23:04 #9
har prøvet med billyclient i varedata.php, men den bliver mega langsom da den jo skal forbinde og hente data hver gang jeg ændrer et bogstav i søgning.
Avatar billede olsensweb.dk Ekspert
05. maj 2016 - 23:18 #10
>da den jo skal forbinde og hente data hver gang jeg ændrer et bogstav i søgning.
den ville skulle forbinde til serveren efter hvert bogstav under alle omstændigheder, da så snart php er færdigbehandlet slippes forbindelsen til serveren, og dermed dit API.
og det er uanset om din PHP ligger på index.php eller varedata.php
Avatar billede bjering Nybegynder
08. maj 2016 - 21:41 #11
det forstår jeg ikke..
hvis arrayen, er gemt i index.php som aldrig reloader, og den kun henter den fra index.php til varedata.php siden, hvorfor skal den så genhente den hver gang jeg ændrer bogstav?
Så skal den vel kun hente fra lokal php siden index.php og ikke remote serveren som tager tid at hente fra...

Uanset, kan ikke få det til at virke, virker fint uden ajax, men kan ikke få den til at gøre det automatisk uden.

lidt træls
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

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