возвращение JavaScript через ajax, но это не работает - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь получить ссылки, которые появляются после нажатия на название компании, чтобы появиться в светлом поле. на отдельной странице это было возможно, но как только я отправляю тот же код через ajax, он больше не вызывает лайтбокс. помочь?

Это оригинальный файл, который должен представлять сторонний сайт издателя, объединяющий наш код:

<html>
<head>
    <script type="text/javascript" src="lib/js/jquery-latest.js"></script>
    <link rel="stylesheet" href="css/prettyPhoto.css" type="text/css" media="screen" charset="utf-8" />
    <script src="lib/js/jquery.ppo.js" type="text/javascript" charset="utf-8"></script>
    <script src="lib/js/sp.js" type="text/javascript" charset="utf-8"></script>         
</head>
<body>
    This is the publisher's website. <br>
    <div id="bizname1" onclick="showComp(this.innerHTML)" id="bizname" class="bizname">click here - this event should be substituted for an 'on load'.</div><br><br>

lots of data about the company here

<br />
<div id="txtHint"><b>Company info will be listed here.</b></div>


</body>
</html>

Это скрипт ajax, showcomp.js:

function showComp(str)
{
if (str=="")
  {
    document.getElementById("txtHint").innerHTML="";
    return;
  }
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getbutton.php?q="+str,true);
xmlhttp.send();
}

Это файл getbutton.php, вызываемый функцией ajax:

error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();

include('config.php');  
init_connection();

$sql=select content from db;// this part works fine, so actual sql query not inserted here.

$result = mysql_query($sql);

while ($row = mysql_fetch_object($result)) {

    $companyname = $row->result1;
    $contenturl = $row->result2;
    //echo $companyname;
    //echo $contenturl;

?>  

<HTML>
<HEAD>

</HEAD>
<BODY>
    <a href="http://www.youtube.com/embed/DudfBIxw6do?iframe=true&width=640&height=390" rel="prettyPhoto" title="my caption"> Video in iframe
    <img src="images/thumb-1.jpg" width="100" height="40" alt="Video in iframe" />
    </a>
<a href="demo/vidrefer.php?iframe=true&width=500&height=410" rel="prettyPhoto" title="my caption"> Vidrefer in iframe
    <img src="images/thumb-1.jpg" width="100" height="40" alt="Vidrefer in iframe" />
</a>
<br />


</BODY>
</HTML> 

<?php
}

//echo out button here. give the button what it needs to launch the light box. 
echo "
<br>
<div id='button'>
this is a button
</div>
";
//mysql_close($con);
?>
<script id="ppready" type="text/javascript" charset="utf-8">
    $(document).ready(function(){
    $("a[rel^='prettyPhoto']").prettyPhoto();
});
</script>

Пожалуйста, помогите, если вы видите, почему он не работает! Спасибо.

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Я исправил это!проблема была связана с тем, что javascript уже действовал до того, как я загрузил свои новые элементы через ajax.все, что мне нужно было сделать, это загрузить свои элементы перед вызовом ajax и эй presto!

Альтернативным решением было бы использование live () или livequery () в jquery.Они сохраняли бы jquery, действующий на элементы, как до, так и после загрузки в DOM.Simples.

0 голосов
/ 11 мая 2011

JS не будет работать на стороне клиента, когда он просто отображается на стороне сервера.Попробуйте переместить свой кодовый блок

$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto();
<-- inside--> 
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}

Чтобы выглядеть так:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
$("a[rel^='prettyPhoto']").prettyPhoto();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...