Прошу помощи: не работает то ли innerHTML, то ли ajax

12
belyi05
На сайте с 30.05.2007
Offline
74
1900

Здравствуйте, люди добрые. Уже который день никак не могу отладить код, казалось бы, простенького примера.

Чего хочу добиться: я ввожу код скрипта jquery в textarea, он посредством ajax обрабатывается и возвращается в тот же документ и применяется к нужным блокам (дивам).

Но почему-то код не хочет отлаживаться и работать, я виню во всем innerHTML , мне кажется, что это он что-то не так делает, хотя, может, и дело в другом.

Далее привожу ключевые моменты исходников, а также все исходники в архиве в конце темы.

Людям откликнувшимся и объяснившим, в чем я так жутко накосячил, что не хочет работать, будет объявлена большая благодарность, возможно, даже материальная.

Спасибо

Ключевые моменты кода

Файл morephp.html


<form name="test" >
<textarea name="my" id="my" cols="40" rows="15"></textarea><br>
<input type="button" value="Send" onclick="process()" />
</form>

Файл morephp.js


try
{
var my = document.getElementById("my").value;
var params = "my=" + my;
// initiate the asynchronous HTTP request
xmlHttp.open("GET", "morephp.php?" + params, true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}


xmlRoot = xmlResponse.documentElement;
// testing that we received the XML document we expect
if (rootNodeName != "response" || !xmlRoot.firstChild)
throw("Invalid XML structure:\n" + xmlHttp.responseText);
// the value we need to display is the child of the root <response> element
responseText = xmlRoot.firstChild.data;
// display the user message

//наш элемент script
myDiv = document. getElementById("myScript");

//пробую вставить просто строкой - не работает
myDiv.innerHTML = "$(document).ready(function(){ $(\".myDiv\").css(\"border\",\"3px solid red\"); });";


//пробую вставить то, что вытащили из объекта XML - тоже не работает
//myDiv.innerHTML = responseText;


Файл morephp.php


$my = $_GET['my'];

$result = $my;
// create a new XML document
$dom = new DOMDocument();
// create the root <response> element and add it to the document
$response = $dom->createElement('response');
$dom->appendChild($response);
// add the calculated sqrt value as a text node child of <response>
$responseText = $dom->createTextNode($result);
$response->appendChild($responseText);
// build the XML structure in a string variable
$xmlString = $dom->saveXML();
// output the XML string
echo $xmlString;

Все исходники в архиве

[ATTACH]34296[/ATTACH]

zip SE.zip
Здесь я продаю майки - продал уже на 776 690.00 рублей (http://partners.vsemayki.ru/register.php?parent=4714)
Venom_w
На сайте с 14.06.2006
Offline
64
#1

У вас файл morephp.php

Возвращает ошибку формата xml файла?

belyi05
На сайте с 30.05.2007
Offline
74
#2

нет, Firebug никаких ошибок не показывает

Venom_w
На сайте с 14.06.2006
Offline
64
#3

responseText = xmlRoot.firstChild.data;

секундочку :)

embo
На сайте с 05.12.2008
Offline
24
#4

ТС, разжуйте задачу. вы толкаете в textarea JS-код, а он выполняется?

Плавно двигаемся от сапы к статьям (http://miralinks.ru/users/registration/from:4223)
Venom_w
На сайте с 14.06.2006
Offline
64
#5

Дык скрипт после того как вы динамично записали туда код не выполняется повторно, как в случае с onLoad тот, что document

belyi05
На сайте с 30.05.2007
Offline
74
#6
embo:
ТС, разжуйте задачу. вы толкаете в textarea JS-код, а он выполняется?

Да, все верно, в textarea я пихаю

 

$(document).ready(function(){
$(".myDiv").css("border","3px solid red");
});

и хочу чтобы он встал в нужный элемент <script></script> и отработал как нужно

embo
На сайте с 05.12.2008
Offline
24
#7

сложно как все а...

1. в коде страницы должно быть

<div id="myDiv">id="myDiv"</div>

2. в пхп файле:

<?php

// load the error handling module
require_once('error_handler.php');
header('Content-Type: text/html');

$my = $_GET['my'];

// тут какие-то страшные операции, оправдывающие необходимость использования ajax и php

echo $my;
?>

3. js-обработка:

function handleServerResponse()

{
var myDiv = document.getElementById("myDiv");
eval(xmlHttp.responseText);
}

пример - толкаем код

myDiv.style.border = '4px solid blue'

но! сдается мне jquery работать не будет. разбираться надо в общем...

Venom_w
На сайте с 14.06.2006
Offline
64
#8
embo:
eval(xmlHttp.responseText);

ну да ... eval

belyi05
На сайте с 30.05.2007
Offline
74
#9
Venom_w:
Дык скрипт после того как вы динамично записали туда код не выполняется повторно, как в случае с onLoad тот, что document

хм, возможно, что и так, потому что если я делаю то же самое, только вместо кода JS в textarea вставляю секцию CSS-стилей, а затем вставляю их в <style></style>, то все работает...как в таком случае можно сделать, чтобы JS все-таки выполнялся повторно?

embo
На сайте с 05.12.2008
Offline
24
#10

в коде хтмл:

<div class="myDiv">id="myDiv"</div>

js-обработка:

function handleServerResponse()

{
eval(xmlHttp.responseText);
}
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий