Обновление Iframe со скриптом внутри родительской страницы - PullRequest
0 голосов
/ 15 февраля 2011

Я работаю над кое-чем, что будет частью веб-сайта электронной коммерции для назначения. Вы, вероятно, посмотрите на это и подумаете, что я должен просто сделать это с JS, но нам сказали, что вряд ли стоит использовать JS, и вместо этого предпочтение PHP, особенно при запросах таблиц SQL.

Я создаю что-то, где, когда пользователь mouseOvers () для любого изображения в каталоге, общий iFrame обновляется информацией, основанной на изображении, имеющем текущий фокус - он делает это, запрашивая базу данных, используя переменную загружается. Именно здесь я использовал JS для отправки формы, которая обновляет iFrame, и, поскольку PHP анализируется на стороне сервера, после обновления информация может загружаться, по-видимому, динамически для пользователя.

Кажется, все работает, за исключением того факта, что целевой iframe не обновляется, а вместо этого страница загружается в новую вкладку или окно в моем браузере (Firefox). ПРИМЕЧАНИЕ. Этот код является черновиком!

<div class="contentpane">


<div class="image1" onMouseOver="jsFunction();" onMouseOut="jsFunction2();">
    <img src="http://t0.gstatic.com/images?q=tbn:ANd9GcStRUHQMqvpCvdCyEwkO9DFxy0IY9fg1CP3uePBktHRMz8QznlQ" width=100 height=100/>

</div>

<div class="image2">
</div>

<div class="image3">
</div>

<script>
function jsFunction(){

    document.forms['testform'].elements['i1'].value =  "mouseOver";
    document.forms["testform"].submit();
    // force refresh on Mouse Over
    /*var f = document.getElementById('testiframe');
    f.contentWindow.location.reload(true);*/

}

function jsFunction2(){

document.forms['testform'].elements['i1'].value = "mouseOut";
document.forms["testform"].submit();

}

</script>


<iframe src="iframetest.php" id='testiframe' width="200" height="200">
<!-- using this roundabout way with iframes so that all interaction with SQL is via PHP and not JS-->
</iframe>

<!-- hidden form that has a target of the iframe, submitted by the js functions-->
<form id="testform" method="GET" target="testiframe" action="iframetest.php" >
    <input type="hidden" id="i1" name="i1" value="hey"> <!-- retrieved in php file by $_GET-->
</form>

И код для iframetest.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="style.css" />
<title>Home</title>
</head>

<body>

Dynamic content, will be pulled from SQL via PHP <br/> <br/>


<?php 
if(isset($_GET)){
echo $_GET["i1"];
} 
?>

Спасибо за вашу помощь, ребята!

1 Ответ

0 голосов
/ 15 февраля 2011

Эта задача требует ajax с расстояния в несколько миль, но в любом случае здесь это происходит: содержимое отображается на новой странице / вкладке, потому что вы не указали имя iframe, поэтому ваш код должен выглядеть следующим образом:

<iframe src="iframetest.php" name="testiframe" width="200" height="200">
<!-- using this roundabout way with iframes so that all interaction with SQL is via PHP and not JS-->
</iframe>

<!-- hidden form that has a target of the iframe, submitted by the js functions-->
<form id="testform" method="GET" target="testiframe" action="iframetest.php" >
    <input type="hidden" id="i1" name="i1" value="hey"> <!-- retrieved in php file by $_GET-->
</form>

ps обратите внимание на изменение тега iframe с id='testiframe' на name="testiframe"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...