PHP + javascript = validerings fel

Permalänk
Medlem

PHP + javascript = validerings fel

Nu är jag less, har sökt och sökt och försökt en massa olika metoder för att få detta och fungera:

Det är så att jag gjort en sida åt en kund vars dem ville ha väderinformation från en specifik sida, dem hade ett script färdigt för sidor som kunde ändras efter önskemål.
Problemet är att när jag lägger in koden:

<script type="text/javascript" src="http://www.vackertvader.se /weather/widget_request/2725136?bgcolor=4f4f4f&border=none& days=2&key=-KEGu&maxtemp=no&size=x120&textcolor=ffffff&wind=no"> </script>

Så säger w3c validering att det är fel från varje & till =. Dvs. det blir 29 varningar och 19 errors. 42 av Dessa felmeddelanden ser ut så här:

# Line 492, Column 390: cannot generate system identifier for general entity "border" …et_request/2725136?bgcolor=4f4f4f;'&border=none;'&days=2;&key=-KEGu&maxtemp=n An entity reference was found in the document, but there is no reference by that name defined. Often this is caused by misspelling the reference name, unencoded ampersands, or by leaving off the trailing semicolon (;). The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs". Entity references start with an ampersand (&) and end with a semicolon (;). If you want to use a literal ampersand in your document you must encode it as "&" (even inside URLs!). Be careful to end entity references with a semicolon or your entity reference may get interpreted in connection with the following text. Also keep in mind that named entity references are case-sensitive; &Aelig; and æ are different characters. If this error appears in some markup generated by PHP's session handling code, this article has explanations and solutions to your problem. Note that in most documents, errors related to entity references will trigger up to 5 separate messages from the Validator. Usually these will all disappear when the original problem is fixed. # Error Line 492, Column 390: general entity "border" not defined and no default entity …et_request/2725136?bgcolor=4f4f4f;'&border=none;'&days=2;&key=-KEGu&maxtemp=n This is usually a cascading error caused by a an undefined entity reference or use of an unencoded ampersand (&) in an URL or body text. See the previous message for further details.

och resterande 6 så här:

Line 492, Column > 80: XML Parsing Error: EntityRef: expecting ';' …a id='url-KEGu' href="http://www.vackertvader.se/arvidsjaur" class="orange">A…

Nu börjar jag bli riktigt irriterad och lyckas inte hitta någon lösning.
All denna kod är i en php fil

Går det och lägga den här länken från vackertvader.se på något sätt i en *.js fil och ladda in den separat istället för ha hela A)#?#! koden i php filen?

Har även ett litet annat problem,
har en kodsnutt vars javascript tar information från en xml och xlst fil och laddar upp det i php dokumentet, all denna kod går ut på att mata in i en div och för att detta ske måste jag använda mig av <body onload="">.
Dock så gillar inte w3c att jag använder mig av <body> tags i php filer så den skäller på mig om och om igen.
Finns det någon annan lösning till detta?
Skriver även ut koden för att vara på den säkra sidan så slipper folk fråga efter den om någon är sugen på att hjälpa mig.

<script type="text/javascript"> <!--<![CDATA[ function loadXMLDoc(fname) { var xmlDoc; // code for IE if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { xmlDoc=document.implementation.createDocument("","",null); } else { alert('Your browser cannot handle this script'); } xmlDoc.async=false; xmlDoc.load(fname); return(xmlDoc); } function displayResult() { xml=loadXMLDoc("../aida/fids.xml"); xsl=loadXMLDoc("../aida/fids.xslt"); // code for IE if (window.ActiveXObject) { ex=xml.transformNode(xsl); document.getElementById("flight").innerHTML=ex; } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { xsltProcessor=new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); resultDocument = xsltProcessor.transformToFragment(xml,document); document.getElementById("flight").appendChild(resultDocument); } } ]]>--> </script> <script type="text/javascript"> function setVisibility(id, visibility) { document.getElementById(id).style.display = visibility; } </script> <body onload="displayResult()">

Tacksam för svar

Visa signatur

"Wise men say, 'Forgiveness is divine, but never pay full price for a late pizza'."

Permalänk

Det som W3C:s validator säger är att den inte kan parsa &. & betyder ju i HTML-språk "här börjar ett specialtecken" och väntar sen på ett ; som betyder här slutar detta tecken.
Ex: &aring; = å
&Aring; = Å
&ouml; = ö, etc.
Det du ska göra är att du ska ersätta varje &-tecken i URL:n för javascriptet med &amp; vilket betyder just ampersand (&).

Edit: Tänkte ju inte på att firefox skulle konvertera tecknena...

Visa signatur

Workstation: Dell Latitude E5400, WinXP/Ubuntu 9.10. 4 GB RAM, 250GB, P8700 @ 2.53GHz
HTPC: MythBuntu, 2GB RAM, 1TB, Atom dual core @ 1.6 GHz, Sanyo PLV-Z700
Server #1: Ubuntu, 2 GB RAM, 4*143 GB 10K RAID0 +2*73GB 15K RAID1. Intel Xeon dual core @3.2 GHz

Permalänk
Medlem

Wooho! det funkade! Tackar!

Tänkte inte alls på att göra det på den kodsnutten då jag testade ersätta

else if (document.implementation && document.implementation.createDocument)

med

else if (document.implementation && document.implementation.createDocument)

Men då sluta hela scriptet fungera så uteslöt att testa det på andra scriptet.

Dock så har jag fortfarande samma problem med den sista koden som jag skrev nyss, upptäckte att när jag hade lagt

<!--<![CDATA[
]]>-->

mellan koden som är sist i mitt förra inlägg så försvann iaf w3c felmeddelandena men likaså försvann allt från hemsidan också, alltså ingen xml laddades.
Så var tvungen och plocka bort <!--<![CDATA[ ]]>--> och 8 nya errors/varningar dök upp:

Line 93, Column 35: character "&" is the first character of a delimiter but occurred as data else if (document.implementation && document.implementation.createDocument) ✉ This message may appear in several cases: * You tried to include the "<" character in your page: you should escape it as "<" * You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&", which is always safe. * Another possibility is that you forgot to close quotes in a previous tag.

samt

Line 93, Column 34: XML Parsing Error: xmlParseEntityRef: no name else if (document.implementation && document.implementation.createDocument)

Dessa kan jag inte som sagt ändra && på, har även testat lägga in hela koden i en *.js fil men utan resultat, då ville inte skiten fungera längre.

Men du ska ha ett stort tack zyber_zero för att du hjälpte mig med första problemet! minskade rejält med error meddelanden.

Visa signatur

"Wise men say, 'Forgiveness is divine, but never pay full price for a late pizza'."