Solved

XML not being passed to Firefox, but in IE it works. Jquery Each,Find

Posted on 2009-04-10
3
441 Views
Last Modified: 2013-12-07
Hi Guys

I think im formating my xml incorrectly


if you look in the data.php file at the top. i have added this line header('Content-type: text/xml');

that makes it work in IE. but then it doesnt work in Firefox, if i take it out, it doesnt work in IE but works in Firefox.. What am i doing wrong here?

<!--data.php file-->
 
<?php session_start();
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header('Content-type: text/xml');
include("./../include/php/inc.functions.php");
 
$Action = isset($_REQUEST['action']) ? $_REQUEST['action'] : die();
$UserId = intval(isset($_REQUEST['UserId']) ? $_REQUEST['UserId'] : "");
$MessageId = intval(isset($_REQUEST['MessageId']) ? $_REQUEST['MessageId'] : "");
$Text = fixString(isset($_REQUEST['Text']) ? $_REQUEST['Text'] : "");
 
$myServer = "194.255.125.36";
$myUser = "vipper";
$myPass = "g7k39##f63qd##";
$myDB = "GoVip"; 
$conn = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to MySQL Server"); 
$selected = mssql_select_db($myDB, $conn)
  or die("Couldn't open database"); 
 
if($Action == 'SendMessage'){
	$insert = "
		INSERT MessengerConversations (FromUserId,ToUserId,Text) values (".$_SESSION['UserId'].",$UserId,'$Text')
	";
	mssql_query($insert);
	mssql_close($conn);
	die();
}
 
if($Action == 'GetFriends'){
	$select = "
		SELECT 
			DISTINCT(f1.FriendId),
			Users.UserId,
			Users.UserName,
			Users.Status, 
			Users.Region,
			Users.Gender,
			CASE WHEN DATEDIFF(Mi,getdate(),Users.OnlineTime) > -12 THEN 'Online' ELSE 'Offline' END IsOnline,
			(SELECT 
				COUNT(*) 
			FROM 
				MessengerConversations 
			WHERE 
				MessengerConversations.FromUserId = Users.UserId
				AND (ReadBy1 IS NULL OR ReadBy1 <> ".$_SESSION['UserId'].") 
				AND (ReadBy2 IS NULL OR ReadBy2 <> ".$_SESSION['UserId'].")
			) NewMessage
		FROM 
			Friends f1 
		JOIN friends f2 ON f1.frienduserid=f2.userid
		JOIN friends f3 ON f2.frienduserid = f3.userid
		LEFT JOIN Users ON f1.FriendUserId=Users.UserId
		WHERE 
			f1.userid = ".$_SESSION['UserId']."
			and f3.userid = ".$_SESSION['UserId']."
		ORDER BY IsOnline DESC,Gender DESC,UserName ASC 
	";
	$rs = mssql_query($select);
	$numRows = mssql_num_rows($rs); 
	if($numRows>0){
		$i=0;
		$color = "";
		echo '<?xml version="1.0" encoding="UTF-8"?>';
		echo "<friends>";
		while($row = mssql_fetch_array($rs)){
			echo "		
				<friend id='".$row['UserId']."'>
					<username>".$row['UserName']."</username>
					<userid>".$row['UserId']."</userid>
					<status>".$row['IsOnline']."</status>
					<newmessage>".$row['NewMessage']."</newmessage>
				</friend>
			";
		}
		echo "</friends>";
	}
	mssql_close($conn);
	die();
	
}
if($Action == 'GetConversation'){
	$select = "
		SELECT
			t1.MessageId,
			convert(char,t1.CreatedDate,108) CreatedDate,
			t1.FromUserId,
			t2.UserName FromUserName,
			t1.ToUserId,
			t3.UserName ToUserName,
			t1.Text
		FROM
			MessengerConversations t1
		LEFT JOIN Users t2 ON t1.FromUserId=t2.UserId
		LEFT JOIN Users t3 ON t1.ToUserId=t3.UserId
		WHERE
			(t1.FromUserId=".$_SESSION['UserId']." OR t1.ToUserId=".$_SESSION['UserId'].")
			AND (t1.FromUserId=$UserId OR t1.ToUserId=$UserId)
			AND (ReadBy1 IS NULL OR ReadBy1 <> ".$_SESSION['UserId'].")
			AND (ReadBy2 IS NULL OR ReadBy2 <> ".$_SESSION['UserId'].")
		ORDER BY
			t1.CreatedDate ASC
		
		UPDATE 
			MessengerConversations 
		SET 
			ReadBy1 = isnull(ReadBy1,".$_SESSION['UserId']."),
			ReadBy2 = (case WHEN ReadBy1 IS NOT NULL AND ReadBy1<>".$_SESSION['UserId']." THEN ".$_SESSION['UserId']." ELSE ReadBy2 END)
		WHERE 
			(FromUserId = ".$_SESSION['UserId']." OR ToUserId = ".$_SESSION['UserId'].") 
			AND (FromUserId = ".$UserId." OR ToUserId = ".$UserId.")
		
	";
	$rs = mssql_query($select);
	$numRows = mssql_num_rows($rs); 
	if($numRows>0){
		$i=0;
		$color = "";
		echo '<?xml version="1.0" encoding="UTF-8"?>';
		echo "<conversations>";
		while($row = mssql_fetch_array($rs)){
			echo "		
				<conversation id='".$row['UserId']."' messageId='".$row['MessageId']."'>
					<createddate>".$row['CreatedDate']."</createddate>
					<fromuserid>".$row['FromUserId']."</fromuserid>
					<fromusername>".$row['FromUserName']."</fromusername>
					<touserid>".$row['ToUserId']."</touserid>
					<tousername>".$row['ToUserName']."</tousername>
					<theText>".$row['Text']."</theText>
				</conversation>
			";
		}
		echo "</conversations>";
	}else{
		echo "<conversations>";
		echo "</conversations>";
	}
	mssql_close($conn);
	die();
	
}
 
 
?>
 
 
 
 
<!-- JAVASCRIPT FUNCTION TO GET IT-->
 
function TCMessenger_GetFriends(){
	
	$.ajaxq ("TCMessenger_Queue", {
		url: "/TCMessenger/data.php?action=GetFriends",
		cache: false,
		success: function(html)
		{
		
			$(html).find('friend').each(function(){
				         
                var id = $(this).attr('id');
                var UserName = $(this).find('username').text();
                var UserId = $(this).find('userid').text();
                var Status = $(this).find('status').text();
                var NewMessage = $(this).find('newmessage').text();
                if(document.getElementById('TCMessenger_Friend_'+id)==null)
					$("<tr id='TCMessenger_Friend_"+id+"' onclick='TCMessenger_OpenConversation("+id+");' onmouseover='TCMessenger_ConversationHiLight(this.id,\"over\");' onmouseout='TCMessenger_ConversationHiLight(this.id,\"out\");' UserId='"+id+"' UserName='"+UserName+"' class='TCMessenger_Friend'><td>"+UserName+"</td><td id='TCMessenger_FriendStatus_"+id+"'>"+Status+"</td><td id='TCMessenger_NewMessage_"+id+"'></td></tr>").appendTo("#TCMessenger_FriendsListTable");
				
				if(document.getElementById('TCMessenger_Friend_'+id)!=null && document.getElementById('Conversation_'+UserId)==null && Status=='Offline')
					$("#TCMessenger_Friend_"+id).remove();
				var State = $("#TCMessenger_FriendStatus_"+id).text();
				if(Status!=State)
					$("#TCMessenger_FriendStatus_"+id).text(Status);
				if(!$("#TCMessenger_Friend_"+id).attr("active") && NewMessage>0){
					document.getElementById('TCMessenger_NewMessage_'+id).innerHTML = "<img src='/images/icons/talk.png'>";
				}
				
						
            });
          
		}
	});	
}

Open in new window

0
Comment
Question by:tim_carter
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 5

Expert Comment

by:brandonvmoore
ID: 24114066
I don't know the answer to your question, but a possible solution until you find one is to check which browser is calling and send the appropriate response.
0
 
LVL 1

Accepted Solution

by:
tim_carter earned 0 total points
ID: 24114113
i have solved it like this

if(!(strpos($_SERVER['HTTP_USER_AGENT'],'Mozilla/5') === false)) {
      //
}elseif(!(strpos($_SERVER['HTTP_USER_AGENT'],'Opera') === false)) {
      //
}else {
      header('Content-type: text/xml');      
}

i know its not the right way to do it, but dont know how else to solve it actually.. without the header content-type it works in, FF/Chrome/Opera. but not IE. so im just detechting if it is IE, and inserting it
0
 
LVL 39

Expert Comment

by:abel
ID: 24114550
> i have added this line header('Content-type: text/xml');

this is a known and long-standing bug with IE not using and understanding the proper header of "application/xml". Here's one of the many posts on the subject: http://www.petefreitag.com/item/381.cfm
0

Featured Post

Why Off-Site Backups Are The Only Way To Go

You are probably backing up your data—but how and where? Ransomware is on the rise and there are variants that specifically target backups. Read on to discover why off-site is the way to go.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Citrix XenApp, Internet Explorer 11 set to Enterprise Mode and using central hosted sites.xml file.
Today, still in the boom of Apple, PC's and products, nearly 50% of the computer users use Windows as graphical operating systems. If you are among those users who love windows, but are grappling to keep the system's hard drive optimized, then you s…
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
This Micro Tutorial will demonstrate how nuggets on the Web are formatted by using Chrome Developer Tools. These tools would not only view the site's CSS but it can also modify it and save the CSS to use on your own site.

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question