No image and no popup
I hava an ajax application that will not display an image, or create a popup from html stored in a file.
This is the code I am using for the popup:
echo '<script>
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write(' . json_encode($row2["ARTICLE_DESC"]) . ');
child1.document.close();
}
</script>';
And the resulting html
<script>
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<!-- +++++++++++++++++++++++++ Bitte \u00e4ndern Sie im eigenen Interesse nichts an diesem Code! ++++++++++++++++++++++++ -->\n<!-- +++++++++++++++++++++++++ Das kann massive Fehldarstellungen ihrer Auktion zur Folge haben! +++++++++++++++++++ -->\n<!-- +++++++++++++++++++++++++ ++++++++++++++++++++++++++ Ihr Supreme Team +++++++++++++++++++++++++++++++++++++++++ -->\n");
child1.document.close();
}
</script><br />
<b>Notice</b>: Undefined index: CATEGORY in <b>C:\Programme\EasyPHP 2.0b1\www\get_auction.php</b> on line <b>39</b><br />
<div id='leftlayer'>
<strong>Article Number</strong> 220288560247
<p><strong>Article Name</strong></p> Ed Hardy Herren Shirt Rock & Roll Weiss XXL Neu & OVP
<p><strong>Subtitle</strong></p>
<p><strong>Username</strong></p> fashionticker1
<p><strong>Total Selling</strong></p> 1
<p><strong>Total Sold</strong></p> 0
<p><strong>Category</strong></p>
<p><strong>Highest Bidder</strong></p> 0
</div>
<div class='leftlayer2'>
<strong>Current Bid</strong> 0.00
<p><strong>Start Price</strong></p> 49.00
<p><strong>Buyitnow Price</strong></p> 59.00
<p><strong>Bid Count</strong></p> 0
<p><strong>Start Date</strong></p> 1.10.2008 16:22:09
<p><strong>End Date</strong></p> 6.10.2008 16:22:09
<p><strong>Original End</strong></p> 6.10.2008 16:22:09
<p><strong>Auction Type</strong></p> 1
</div>
<div class='leftlayer2'>
<strong>Private Auction</strong></p> 0
<p><strong>Paypal Accepted</strong></p> 0
<p><strong>Auction Watched</strong></p> 0
<p><strong>Finished</strong></p> 1
<p><strong>Country</strong></p>
<br>
<br>
<style ty
<p><strong>Location</strong></p> float: right;
<p><strong>Conditions</strong></p> margin: 0px;
</div>
<div class='leftlayer2'>
<strong>Auction Revised</strong></p> 0
<p><strong>Cancelled</strong></p> 0
<p><strong>Shipping to</strong></p> padding:5px;
<p><strong>Fee Insertion</strong></p> 0.00
<p><strong>Fee Final</strong></p> 0.00
<p><strong>Fee Listing</strong></p> 0.00
<p><a href='#' onclick='makewindows(); return false;'>Click for full description </a></p>
</div><div id='rightlayer'>Picture Picture
<img src=http://storage.supremeauction.com/flash/ebay2/10/49/76/10497654/13895964e.jpg>
</div>
img src is a valid location and opens fine in the browser but does not appear on the page. I am getting a script error that does not contain any details.
edit: When only one file is called and not as part of the application, the resulting html file creates a link that creates a popup, but the source shows that nothing is assigned in the window:
child1.document.write("");
I made changes to the img src line:
<img src='".$lastImg."'>
As a result, html is returned:
<img src=''>
Your HTML looks invalid - you have:
<style ty
<p><strong>Location</strong></p> float: right;
<p><strong>Conditions</strong></p> margin: 0px;
First, the tag is <style>
not closed (1.the open tag is not yet complete and 2.you don't have a closing tag) - when I look at the HTML with Firefox / Firebug, it treats the rest of the HTML as being in that tag and hence not displaying it.
Also you have style declarations such as float: right;
blended inside HTML rather than inside a style tag.
You really need to get Firefox / Firebug to help debug this. It is possible that your script error is causing the page to stop loading and thus your image is not displayed.
If you are porting this answer over Ajax using innerHTML replacement, it won't work. You need to parse <script>...</script>
in the callback and eval()
.
In general, you should be using some decent server-side PHP framework and client-side Javascript library. Otherwise, you'll soon start rewriting your program from scratch to clean it up, just to find out it's hardly any better.