24. juni 2014 - 12:29 Der er 6 kommentarer og
1 løsning

Hent XML fil via JQUERY ...

HEJ

Jeg har hentet eksemplet fra:

http://code.tutsplus.com/tutorials/quick-tip-use-jquery-to-retrieve-data-from-an-xml-file--net-390

Jeg har så forsøgt at få det til at køre lokalt, men det vil det altså ikke !

Hvad er det jeg gør galt ?

Her er koderne:

XMl Data:

<?xml version="1.0" encoding="utf-8" ?>
<books>
    <book title="CSS Mastery" imageurl="images/css.jpg">
    <description>info goes here.</description>
    </book>

    <book title="Professional ASP.NET" imageurl="images/asp.jpg">
    <description>info goes here.</description>
    </book>

    <book title="Learning jQuery" imageurl="images/lj.jpg">
    <description>info goes here.</description>
    </book>
</books>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>MYBOOKS</TITLE>
<META NAME="Generator" CONTENT="">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">

<script src="jquery.js" ></script>
</HEAD>

<BODY>

<script>

$(document).ready(function()
{
        $.get('myData.xml', function(d)
        {
            $('body').append('<h1> Recommended Web Development Books </h1>');
            $('body').append('<dl>');
           
/* mine tests */
            if ($(d).find() )
            {
                alert('OK');        // MIN TEST
            }
            if ( $(d).find('book').each(function(){} ) )
            {
                alert('osse OK ');
            }
/* mine tests */


            $(d).find('book').each(function()
            {
                var $book = $(this);
                var title = $book.attr("title");
                var description = $book.find('description').text();
                var imageurl = $book.attr('imageurl');
                var html = '<dt> <img class="bookImage" alt="" src="' + imageurl + '" /> </dt>';
                html += '<dd> <span class="loadingPic" alt="Loading" /></span>';
                html += '<p>' + title + '</p>';
                html += '<p> ' + description + '</p>' ;
                html += '</dd>';
                $('dl').append($(html));

               
//        $('.loadingPic').fadeOut(1400);
        });
    });
});

// dl
</script>

</BODY>
</HTML>

Jeg har i forsøget på at finde ud af hvad der var galt indlagt nogle test's. De er mærkent med mine test's.

I org teksten er der en DL efter <scriptet> .. Hvad gør den ?
(er det en manglende <tag> for den i body).(append ('<DL>') øverst ? 

Enhver hjælp modtages med TAK.


Kristian
Avatar billede Slater Ekspert
24. juni 2014 - 12:43 #1
Når du siger lokalt, mener du så bare at vise filen i en browser, eller en lokal webserver?

AJAX virker nemlig ikke, hvis man bare kører filen lokalt uden server.
24. juni 2014 - 12:55 #2
HEJ,

Tak for svar.

med lokalt mener jeg på en maskine UDEN internet-forb. og jeg kan så regne ud at denne her løsning kræver internet-forb. (damn!)

Jeg har brug for en løsning (XML) hvor jeg kan hente data til en HTML-side UDEN at have www-forb.

er dette muligt ?  Og har du nogen anelse om hvordan dette (kan) gøres ?

KR
Avatar billede Slater Ekspert
24. juni 2014 - 13:46 #3
Du behøver sådan set ikke internet, du skal bare køre det over en webserver, f.eks. IIS eller Apache. Den kan du installere på din egen maskine og bruge localhost som domæne.

Skal det være nemt kan du f.eks. hente WampServer eller XAMPP.
24. juni 2014 - 14:28 #4
Hej,

Tak igen.

Problemet er, at det er til en applikation, som IKKE kan anvende hverken I-net (www) eller en Web-server (overhovedet). Det skal køre på maskiner, som IKKE har I-net forbindelse.

Kort fortalt er projectet følgende:

Delphi har regnekraften og databasen, mens HTML har visningen (sammen med CSS, JavaScript (Jquery) og XML ).

Dette webside er et del-forsøg på at skabe tabeller som kan indlæses via XML (så jeg slipper for at generere dem i JavaScript (igen via et Javascript/delphi interface, som findes og kører tilfredsstillende), da det ikke alene vil være mere elegant, også loade hurtigere men også nemmere at vedligeholde.

Men da jeg er ny i Jquery må jeg krybe før jeg kan gå, og jeg valgte (måske) den sværeste del først.

Men det er derfor jeg vil bruge en (masse) tid på at gennemføre det (og de eksisterende Javascript rutiner skal senere udskifte med Jquery rutiner, som gør det samme, men da har jeg mere erfaring.)


Kristian
Avatar billede Slater Ekspert
24. juni 2014 - 14:45 #5
Nu siger jeg det lige igen, da dit svar giver anledning til det - beklager, hvis du føler jeg kører i samme spor: En lokal webserver kræver ikke nogen form for internetforbindelse. Det er bare et program, du skal installere på computeren og bruge til at vise siden.

Naturligvis, hvis det er en fil, du skal distribuere, er det ikke så let at bede folk om at installere, så jeg kan sagtens se problemer stadig. Men AJAX er desværre begrænset på det område.
24. juni 2014 - 16:48 #6
HEJ,

Nok igen TAk - .

Jeg glemte en ting i mit forrige svar.

Delphien kommunikerer med en TWEbbrowser (som i princippet er det samme som en IE). Jeg har prøvet at køre rutinen under delphi-projectets control, men her sker det samme. (Ingen visning af data).

Det synes som om den eneste løsning er en "rigtig" www-browser med I-net-forbindelse og at installere en Web-server (IIS eksempelvis) kan jeg ikke bede bruger -en/ -ne om.

De Web-sider jeg allerede har lavet i forbindelse med projectet kører ganske udmærket (når jeg aktiverer det hele via Javascript- rutiner - som jeg kalder fra Delphi).

Jeg så en mulighed for at kunne opdatere (/modernisere) projectet ved at bruge XML, da jeg i så fald lægger hele "databasen"  (læs: tabellerne med præsentations-data ) over i en XML-fil.  Det ville spare tid. På nogen af sidene vil det kunne gå uden videre (hvor der er mere præsentation end kommunikation) men på andre er der mere komm. end præsentation. Det er her problemet er present.

Jeg overvejede om det kunne gøres med XML Islands ,men har læst et sted at MicroSnot har fjernet alt fra IE10+ (ie9 også ?), så det er (også (suk)) udelukket.

Visse dele af siderne vil indeholde fortrolige data (ikke CPR-numre, men industri-data) , så en www-forbindelse vil åbne for en ikke helt ønsket mulighed for en evt. industri-spionage. 

Jeg gør følgende:

var inidata = new array();
  inidata{0} = new Array('',... '');  // svarer til mandag
  ..
  inidata[6] = new Array('',... '');  // svarer til søndag

..

længere nede i koden:

function laegin(aRRay,pOS,dAtA);  // lægger dAtA ind i aRRay( = inidata[n] (n = 0 --> 6) på position(pOS).. (min fremhævning)

Denne fungerer (alle Arrays fra pos[0] --> pos(sidste) ) men jeg synes det ville være mere elegant med en XML-løsning. Af grunde som tidligere nævnt.

Hvis jeg må droppe denne XML-løsning overalt (fordi den kræver en aktiv WWW-forbindelse) kan du evt. foreslå en anden løsning ? Evt en Jquery -løsning ?

Kristian
24. juli 2014 - 00:31 #7
Fandt en løsning som jeg kan leve med. Ikke den bedste. Men heller ikke den værste.
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