Just nu i M3-nätverket
Gå till innehåll
Aktuellspeedway.se

Inkludera script hos tredje part.

Rekommendera Poster

Aktuellspeedway.se

Behöver hitta ett sätt för att inkludera PHP/HTML hos tredje part. Lika Svenska Fotbolls Förbundets widgets.

Är ganska okunnig inom JavaScript, så finns det några länkar eller enklare sätt att göra detta på?

Det som ska inkluderas är serietabeller, statistik etc. från våran databas.

 

Misstänker att man på något vis gör så att php scriptet körs på min domän och sedan inkluderas html hos den tredje parten.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Jag hade nog gjort ett js som hämtar resultat från json (php-fil som genererar json-datan) som javascriptet använder sig av och skapar upp element på sida som inkluderar scriptet.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Det var en svår nött att knäcka detta. Har du någon länk där man kan läsa lite mer?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Nej jag har inte det.

 

Skapa en php-fil på din sida. Den ska hämta data från din databas och använda den när du skriver ut i filen.

Lämpligtvis i json eller array, beror på ändamålet och hur mycket data det rår sig om.

 

Börja med att skapa javascriptet med dummy-data och mocka utseendet och gör sedan databiten.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
mac3

Hej 

 

han menar så här 
http://api.jquery.com/jQuery.post/
 

Eftersom det är lite svårt hjälpa dig när  du inte sagt vilket  du använder systemet dig utav  och hur det andra system ser ut 

 

Wordpress plugin är ett sätt också om du använder  Wordpress
 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Hej 

 

han menar så här 

http://api.jquery.com/jQuery.post/

 

Eftersom det är lite svårt hjälpa dig när  du inte sagt vilket  du använder systemet dig utav  och hur det andra system ser ut 

 

Wordpress plugin är ett sätt också om du använder  Wordpress

 

 

Nej, det är inte så jag menar.

Man anger en annan domän för källa för ett inbäddat javascript; src="http://min-domän-inte-din.se/scripts.php"

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Har lyckats skapa json data utifrån min Mysql databas. Men hur gör man sen för att hämta och skriva ut värderna från php filen?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

N knäckte jag det! Tack för hjälpen

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Stötte på ett problem som jag inte kan hitta lösning på. Har koden:

function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
        out += '<tr><td>' + arr[i].lag + '</td><td>' + arr[i].matcher + '</td><td>' + arr[i].vinster + '</td><td>' + arr[i].oavgjorda + '</td><td>' + arr[i].forluster + '</td><td>' + arr[i].fpplus + '</td><td>' + arr[i].fpminus + '</td><td>' + arr[i].kvot + '</td><td>' + arr[i].bonus + '</td><td>' + arr[i].poang + '</td></tr><br>';
    }
    document.getElementById("serietabell").innerHTML = out;
}

Vart och vad ska man skriva för att få in <TABLE> etc.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
ChromaWoods

Enligt koden du har där så borde elementet som har ID "serietabell" vara just ett tabell-element. Du bör alltså ha en tom <table id="serietabell"></table> någonstans i HTML-strukturen.

 

Funktionen "myFunction" (som för övrigt kanske borde ha ett vettigare namn?) bör anropas så fort datat är hämtat från den externa källan.

 

Ta förresten bort den sista "<br>" i for-loopen; den kommer att medföra felaktig HTML. Använd istället CSS om du behöver bryta raden (fast det borde du inte behöva eftersom tabellrader gör detta per default).

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Det kan ibland vara problem med att använda innerHTML på tabell-element.

Kolla istället på att använda createElement och skapa upp <tr> och underliggande <td>

 

se mer här: http://stackoverflow.com/questions/14061499/how-to-create-table-cell-with-innerhtml-value-textnode-via-loop-of-array

 

Typ så här:

function myFunction(seriedata) {
	var serie_table = document.getElementById('serietabell');
    for(var i = 0; i < seriedata.length; i++) {
		var row =  document.createElement('tr');
		
		var cell_lag  =  document.createElement('td');
		cell_lag.appendChild(arr[i].lag);
        row.appendChild(cell_lag);

		var cell_matcher  =  document.createElement('td');
		cell_matcher.appendChild(arr[i].matcher);
        row.appendChild(cell_matcher);

		var cell_vinster  =  document.createElement('td');
		cell_vinster.appendChild(arr[i].vinster);
        row.appendChild(cell_vinster);

		var cell_oavgjorda  =  document.createElement('td');
		cell_oavgjorda.appendChild(arr[i].oavgjorda);
        row.appendChild(cell_oavgjorda);

		var cell_forluster  =  document.createElement('td');
		cell_forluster.appendChild(arr[i].forluster);
        row.appendChild(cell_forluster);

		var cell_fpplus  =  document.createElement('td');
		cell_fpplus.appendChild(arr[i].fpplus);
        row.appendChild(cell_fpplus);

		var cell_fpminus  =  document.createElement('td');
		cell_fpminus.appendChild(arr[i].fpminus);
        row.appendChild(cell_fpminus);

		var cell_kvot  =  document.createElement('td');
		cell_kvot.appendChild(arr[i].kvot);
        row.appendChild(cell_kvot);

		var cell_bonus  =  document.createElement('td');
		cell_bonus.appendChild(arr[i].bonus);
        row.appendChild(cell_bonus);

		var cell_poang  =  document.createElement('td');
		cell_poang.appendChild(arr[i].poang);
        row.appendChild(cell_poang);

		serie_table.appendChild(row);
    }

}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Tack!

Inte konstigt att jag inte lyckades, var inte i närheten av detta. Ska titta närmare på det.

 

Tack igen!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

ändrat rad 2 till 

var serie_table = document.getElementById('serietabell');

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Koden fungerade inte för mig :( Men får kolla mer ikväll.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

När jag felsöker via Explorer så får jag inget felmeddelande, men ändå visas inget.

 

Testade att flytta ner getElement delen till slutet och då får jag fram felmeddelande som säger "Arr har inte definerats" för rad 6 i koden. Men jag använde ju arr.lag för den kod jag använde tidigare också och då kunde den hämta datan så tycker det är lite märkligt.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
ChromaWoods

Funktionen loopar ju genom en förmodad array som heter seriedata, men inne i loopen så använder du arr, men arr finns inte och därför får du felet.

 

Byt ut alla arr mot seriedata

 

Om det fortfarande inte funkar så kanske inte seriedata är populerad. Vad det kan bero på är svårt att säga utan att se kringliggande kod. Om du kör funktionen innan HTML-elementen har skapats i DOM-trädet så kommer getElementById inte att hitta tabellen. Det är förmodligen därför felmeddelandet kommer när du har koden längre ner. Jag skulle rekommendera att du samlar scripten långt ner på sidan, gärna innan body-taggen stängs. På så sätt blockerar inte scripten sidrenderingen och den upplevda laddningstiden blir kortare.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

var xmlhttp = new XMLHttpRequest();
 var url = "http://www.aktuellspeedway.se/_asra/public/test.php";

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = JSON.parse(xmlhttp.responseText);
        myFunction(myArr);
    }
}
xmlhttp.open("GET", url, true);
 xmlhttp.send();







function myFunction(seriedata) {

	var serie_table = document.getElementById('serietabell');

    for(var i = 0; i < seriedata.length; i++) {
		var row =  document.createElement('tr');
		
		var cell_lag  =  document.createElement('td');
		cell_lag.appendChild(arr[i].lag);
        row.appendChild(cell_lag);

		var cell_matcher  =  document.createElement('td');
		cell_matcher.appendChild(arr[i].matcher);
        row.appendChild(cell_matcher);

		var cell_vinster  =  document.createElement('td');
		cell_vinster.appendChild(arr[i].vinster);
        row.appendChild(cell_vinster);

		var cell_oavgjorda  =  document.createElement('td');
		cell_oavgjorda.appendChild(arr[i].oavgjorda);
        row.appendChild(cell_oavgjorda);

		var cell_forluster  =  document.createElement('td');
		cell_forluster.appendChild(arr[i].forluster);
        row.appendChild(cell_forluster);

		var cell_fpplus  =  document.createElement('td');
		cell_fpplus.appendChild(arr[i].fpplus);
        row.appendChild(cell_fpplus);

		var cell_fpminus  =  document.createElement('td');
		cell_fpminus.appendChild(arr[i].fpminus);
        row.appendChild(cell_fpminus);

		var cell_kvot  =  document.createElement('td');
		cell_kvot.appendChild(arr[i].kvot);
        row.appendChild(cell_kvot);

		var cell_bonus  =  document.createElement('td');
		cell_bonus.appendChild(arr[i].bonus);
        row.appendChild(cell_bonus);

		var cell_poang  =  document.createElement('td');
		cell_poang.appendChild(arr[i].poang);
        row.appendChild(cell_poang);

		serie_table.appendChild(row);
    }

}

Ändrar jag till seriedata får jag istället "HierarchyRequestError"

 

Här är hela koden iaf.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B
var xmlhttp = new XMLHttpRequest();
 var url = "http://www.aktuellspeedway.se/_asra/public/test.php";

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = JSON.parse(xmlhttp.responseText);
        myFunction(myArr);
    }
}
xmlhttp.open("GET", url, true);
 xmlhttp.send();







function myFunction(seriedata) {

	var serie_table = document.getElementById('serietabell');

    for(var i = 0; i < seriedata.length; i++) {
		var row =  document.createElement('tr');
		
		var cell_lag  =  document.createElement('td');
		cell_lag.appendChild(seriedata[i].lag);
        row.appendChild(cell_lag);

		var cell_matcher  =  document.createElement('td');
		cell_matcher.appendChild(seriedata[i].matcher);
        row.appendChild(cell_matcher);

		var cell_vinster  =  document.createElement('td');
		cell_vinster.appendChild(seriedata[i].vinster);
        row.appendChild(cell_vinster);

		var cell_oavgjorda  =  document.createElement('td');
		cell_oavgjorda.appendChild(seriedata[i].oavgjorda);
        row.appendChild(cell_oavgjorda);

		var cell_forluster  =  document.createElement('td');
		cell_forluster.appendChild(seriedata[i].forluster);
        row.appendChild(cell_forluster);

		var cell_fpplus  =  document.createElement('td');
		cell_fpplus.appendChild(seriedata[i].fpplus);
        row.appendChild(cell_fpplus);

		var cell_fpminus  =  document.createElement('td');
		cell_fpminus.appendChild(seriedata[i].fpminus);
        row.appendChild(cell_fpminus);

		var cell_kvot  =  document.createElement('td');
		cell_kvot.appendChild(seriedata[i].kvot);
        row.appendChild(cell_kvot);

		var cell_bonus  =  document.createElement('td');
		cell_bonus.appendChild(seriedata[i].bonus);
        row.appendChild(cell_bonus);

		var cell_poang  =  document.createElement('td');
		cell_poang.appendChild(seriedata[i].poang);
        row.appendChild(cell_poang);

		serie_table.appendChild(row);
    }

}

Ändrar jag till seriedata får jag istället "HierarchyRequestError"

 

Här är hela koden iaf.

 

 

Skämsmössan på...   :wacko:  

 

Sedan skulle man kunna förkorta koden något, med mindre felsökningsmöjligheter;

var cell_matcher  =  document.createElement('td');
cell_matcher.appendChild(seriedata[i].matcher);
row.appendChild(cell_matcher);

// till

row.appendChild(document.createElement('td').appendChild(seriedata[i].matcher));

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Ingen idè varför jag får "HierarchyRequestError"?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
ChromaWoods

Aktuellspeedway.se, Står det vilken rad det inträffade på, och i så fall vilken kod har du skrivit där?

 

Jonas__B, jag tycker mig se ett misstag i din kod. :) Den här raden

 

row.appendChild(document.createElement('td').appendChild(seriedata[i].matcher));

 

Kommer nog inte funka. appendChild förväntar sig en DOM-nod, men seriedata.matcher innehåller väl ett primitivt värde, antingen en sträng eller ett heltal. Så du kommer nog inte ifrån att skapa en referens till cellen och sedan sätta innerHTML eller text på den. Eller tänka om funktionen helt.

 

Även om appendChild hade skapat en DOM-nod utifrån en text-sträng, så hade det nog ändå inte funkat, eftersom det ju är den sista länken i kedjan som skickas till den appendChild som körs på row. Det skulle med andra ord bara appendas en text-sträng direkt under row, alltså inte med tillhörande td-element. Brukar inte mecka mecka med DOM på detta sätt så jag kan ha fel, men rent logiskt tycker jag att det borde vara så. :)

Redigerad av ChromaWoods

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se
cell_lag.appendChild(seriedata[i].lag);

Det är denna raden den klagar på.

 

 

Redigerad av Aktuellspeedway.se

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
ChromaWoods
cell_lag.appendChild(seriedata[i].lag);

Det är denna raden den klagar på.

 

 

Precis. Det sker av anledningen jag nämnde i svaret till Jonas__B här ovan. Testa cell_lag.innerHTML = seriedata.lag istället. Och så vidare med resten av fälten förstås.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Aktuellspeedway.se

Bingo!!

Tack så hemskt mycket för hjälpen båda två :thumbsup:

Redigerad av Aktuellspeedway.se

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
ChromaWoods

Kunde inte hålla mig, skrev en lite nättare variant.  :blush:

function myFunction(seriedata) {

    var serieTable = document.getElementById('serietabell');

    for(var i = 0; i < seriedata.length; i++) {
    
        var row = document.createElement('tr');
        
        serieTable.appendChild(function(fields) {
            for (var j = 0, l = fields.length; j < l; j++) {
                var cell = document.createElement('td');
                cell.innerHTML = seriedata[i][fields[j]];
                row.appendChild(cell);
            }
            return row;
        }(['lag', 'matcher', 'vinster', 'oavgjorda', 'forluster', 'fpplus', 'fpminus', 'kvot', 'bonus', 'poang']));
        
    }

}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...