By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,882 Members | 2,489 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,882 IT Pros & Developers. It's quick & easy.

New to Ajax - Returning Javascript and $_SESSION information. (Using PHP)

P: 6
I am currnetly programming a file hosting website in PHP and I am slowly integrating AJAX into the website.

Here is my problem:

The user uploads the file.
The server processes the file and stores a $_SESSION['code'] variable.
After the upload is complete, the server supplies a link that allows the user to view their link codes.
Once they click the link, the page will return the information stored in the $_SESSION['code'] variable. The normal link which opens a new page works flawless. However, when I try to return that information using AJAX, the $_SESSION['code'] variable is showing up as empty.

Here are the files I'm using:
upload.php
This page will process the upload, rename the file, move it, store some database information, and set the session variable $_SESSION['code']
This page contains a script tag with ajax.js as the src.
When the upload is complete, it will display a link that allows the user to execute the getLinkCodes function
getLinkCodes('linkcodes.php', 'maincontainer');

ajax.js
Expand|Select|Wrap|Line Numbers
  1. function getLinkCodes(datasource, divID){
  2.     var XMLHttpRequestObject = false;
  3.  
  4.     if (window.XMLHttpRequest) {
  5.         XMLHttpRequestObject = new XMLHttpRequest();
  6.     } else if (window.ActiveXObject){
  7.         XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  8.     }
  9.  
  10.     if (XMLHttpRequestObject) {
  11.             var obj = document.getElementById(divID);
  12.             obj.innerHTML = "Loading...";
  13.             XMLHttpRequestObject.open("GET", datasource);
  14.  
  15.             XMLHttpRequestObject.onreadystatechange = function(){
  16.                 if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){
  17.                     obj.innerHTML = XMLHttpRequestObject.responseText;
  18.                 }
  19.             }
  20.             XMLHttpRequestObject.send(null);
  21.     }
  22. }
linkcodes.php - This will actually display the link codes so that the user can copy and paste them into a forum without any further editing.
This is the page that the XMLHttpRequest actually returns.
[code]

<script type="text/javascript" src="templates/base.js"></script>
<script src="templates/members/multifile_compressed_image.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
var img_files = {};
try
{
img_files = [<?php echo $_SESSION['code']; ?>];
}
catch ( error ) { img_files = {}; }


function write_tags ( type, where )
{
if ( typeof where == 'undefined' ) return false;
var target = $(where);
if ( !target ) return false;

var code = '';
var cntr = 1;

var str = new Array();

for ( var i = 0; i < img_files.length; ++i )
{
var file = img_files[i];

switch ( type )
{
case 'link_bb':
{
if ( file.is_image == 1 ){
code += '[img]' + file.thumb_url + '[/img] ';
if ((cntr%4) == 0){
str.push(code);
code = '';
}
cntr++;
}else{
code += '' + file.name + '';
str.push(code);
code = '';
}
} break;

case 'link_html':
{
if ( file.is_image )
var code = '<a href="' + file.url + '">\n <img src="' + file.thumb_url + '" alt="' + file.name + '" />\n</a>\n';
else
var code = '<a href="' + file.url + '">' + file.name + '</a>\n';
str.push(code);
}
break;

case 'direct_bb':
{
var code = file.is_image ? '[img]' + file.d_url + '[/img]' : '' + file.name + '';
str.push(code);
}
break;

case 'direct_html':
{
var code = file.is_image ? '<img src="' + file.d_url + '" alt="' + file.name + '" />' : '<a href="' + file.d_url + '">' + file.name + '</a>';
str.push(code);
}
break;

case 'direct_url':
{
str.push ( file.d_url );
}
break;
}
}
if (code != '' && type == 'link_bb'){
str.push(code);
}
target.value = str.join("\r\n");
}

function switch_bb_case ( bb_case )
{
var target = $('link_codes');

function toUpper(str){alert(str);}

if ( bb_case == 'upper' )
{
target.value = target.value.replace ( /\[(\/)?img\]/gm, '[$1IMG]' );
target.value = target.value.replace ( /\[(\/)?url\]/gm, '[$1URL]' );
target.value = target.value.replace ( /\[url=/gm, '[URL=' );
}
else
{
target.value = target.value.replace ( /\[(\/)?IMG\]/gm, '[$1img]' );
target.value = target.value.replace ( /\[(\/)?URL\]/gm, '[$1url]' );
target.value = target.value.replace ( /\[url=/gm, '[url=' );
}
}

function imgInit ( )
{
write_tags('link_bb','link_codes');
}
addLoadEvent ( imgInit );
-->
</script>

<div class="middle1">
<div align="center">
Linking codes: <span class="link" onclick="write_tags('link_bb','link_codes');return false;">BB format</span> - <span class="link" onclick="write_tags('link_html','link_codes');retu rn false;">HTML format</span>
&nbsp; &nbsp; &nbsp;Direct link: <span class="link" onclick="write_tags('direct_bb','link_codes');retu rn false;">BB format</span> -
<span class="link" onclick="write_tags('direct_html','link_codes');re turn false;">HTML format</span> -
<span class="link" onclick="write_tags('direct_url','link_codes');ret urn false;">Just the direct URLs</span>
</p>
<textarea rows="15" cols="100" id="link_codes" name="link_codes" style="padding: 2px;"></textarea>
</div>
</div>
[/code]

As I said, the linkcodes.php is the "lext" that the getLinkCodes function returns. However, The javascript in the linkcodes.php page does not load at all because I'm guessing it's not passed back as text.

Please let me know what you guys think and thanks for the help in advanse.

Steven
Jul 8 '07 #1
Share this Question
Share on Google+
1 Reply


P: 6
I just realized there are a few spelling errors. I was typing too quick to get this message posted so please ignore them :)
Jul 9 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.