TLENS » 2011.02.06 19:35

Я вот вызываю таким образом он срабатывает на ссылках и формах.
Вот вопрос как ето все реализовать чтобы не записывало в историю.

Код:

1
this.setAttribute('target','myframe');
Gemorroj » 2011.02.06 20:17

смысл? от чего ты пытаешься защититься?

TLENS » 2011.02.06 20:36

Ну я использую такой код типа ajax.
Сам аякс чет не могу осилить.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
<a href="file.php?page=1" onClick="this.setAttribute('target','myframe');">Go</a>
 
<form method="post" action="file.php?" onSubmit="this.setAttribute('target','myframe');">
<input type="text" name="page" />
<input type="submit" value="go" />
</form>
 
 
<iframe onLoad="window.document.getElementById('content').innerHTML=myframe.document.body.innerHTML;" frameborder='0' width='0' height='0' name="myframe" id="myframe">
</iframe>
<br />
<test id="content"></test>

Но при каждом получении кода работает команда назад.
Надо чтобы при некоторых вызовах запретить перемещение назат
Добавлено спустя   3 минуты  13 секунд:
этот пример ты по идее мне давал.
Вот его и решил юзать

TLENS » 2011.02.07 01:00

Ладно вощем.
Там я так подумал пусть пишет в историю у меня тут другая проблема появилась
три моих iframe почемуто дают ошибку.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!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" xml:lang="ru" lang="ru">
 
<head>
 
<title>Goo</title>
 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="/themes/green/js.js"></script>
<link rel="stylesheet" href="/themes/green/style.css" type="text/css" />
</head><body align="center" onLoad="start();">
<iframe onLoad="window.document.getElementById('frame-content-left').innerHTML=myframel.document.body.innerHTML;" frameborder="0" width="0" height="0" name="myframel" id="myframel"></iframe>
<iframe onLoad="window.document.getElementById('frame-content-center').innerHTML=myframec.document.body.innerHTML;" frameborder="0" width="0" height="0" name="myframec" id="myframec"></iframe>
<iframe onLoad="window.document.getElementById('frame-content-right').innerHTML=myframer.document.body.innerHTML;" frameborder="0" width="0" height="0" name="myframer" id="myframer"></iframe>
 
 
 
 
<div id="header-2"><div id="header-1"><div id="header-3"></div></div></div>
<div id="content"><div id="content-right">
<div align="left" id="header"><div id="header-right">&nbsp;<img src="/themes/logo.gif" alt="logo" /></div></div>
<div id="header-5"><div id="header-4"><div id="header-6"></div></div></div>
 
<table><tr height="10">
<td width="240" align="right" id="frame-content-left"></td>
 
<td width="720" align="center" id="frame-content-center"></td>
 
<td width="240" align="left" id="frame-content-right"></td>
 
</tr></table>
 
 
<br />
</div></div>
 
 
 
<div id="footer-2"><div id="footer-1"><div id="footer-3"></div></div></div>
 
<div id="footer" align="center"><div id="footer-right"></div></div>
 
<div id="footer-5"><div id="footer-4"><div id="footer-6"></div></div></div>
 
 
 
 
 
</body>
 
</html>

script

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function start()
{
myframel("/pages/main.php");
myframec("/pages/reg.php");
myframer("/pages/reviews.php");
}
function myframel(url)
{
var myframel=document.getElementById("myframel");
myframel.setAttribute("src",url);
 
}
 
function myframec(url)
{
var myframec=document.getElementById("myframec");
myframec.setAttribute("src",url);
 
}
function myframer(url)
{
var myframer=document.getElementById("myframer");
myframer.setAttribute("src",url);
 
}

Добавлено спустя   2 минуты  31 секунду:
Uncaught TypeError: Cannot set property 'innerHTML' of null
(anonymous function)http://topgen.pp.ua/:15
onload
это хром показывает при просмотре кода элементов
хотя все страници загружаются
Добавлено спустя   8 минут  35 секунд:
Блин чет вообще потестил оно на ie mozile не фурычит
ладно пойду спать хочу. Буду разбираться

Gemorroj » 2011.02.07 09:39

чет ты какой-то херней занимаешься)
используй jquery, рабоать с XmlHttpRequest очень просто

TLENS » 2011.02.07 18:31

А ты можешь дать пару примеров?
1) Как же в ту самую форму ввода в рулить чтобы и файлы передавала без обновления страницы.
2) И как это все на ссылки ставить?
И еще вопрос можно как нибудь с делать чтобы все ссылки в <div id="123"></div>
Открывал ajax в <div id="321"></div>
Чтобы ссылки были без всяких обработчиков событий onClick и тому подобному.

TLENS » 2011.02.08 03:56

Gemoroy весьма благодарен за совет. Вот это сила.
Тем боле так как я не знаю толком яву это просто находка.
Огромное спасибо. http://85.17.73.230/img/pasiba.gif
Уже начитался всякой литературы аж загорелся. http://85.17.73.230/img/or.gif

TLENS » 2011.02.08 05:21

Вот и решился вопрос

Код:

1
2
3
4
5
$('a#123').click(function(event){
event.preventDefault();
linkLocation = this.href;
$("#321").load(linkLocation);
});

Чет натяпал.
Сейчас буду с постом ковырятся

TLENS » 2011.02.08 06:37

Gemoroy пожалуйста помоги с формой я тут растерялся немного.
Надо пост форму $("form#content") отправить кликом по сабмиту на test.php и ответ вставить сюда же в $("#content")
Выручай плис

Gemorroj » 2011.02.08 12:28

Можно собирать элементы формы вручную, а можно воспользоваться плагином, который сам это сделает, что удобнее, конечно.
Потребуется нам сама библиотека jQuery и плагин jqery.form
Оф страничка плагина form тут: http://jquery.malsup.com/form/, правда он как-то не особо последнее время развивается и у него есть проблемы с поддержкой оперы. Надеюсь, с выходом jQuery 1.5 его допилят...
Исправленный и сжатый вариант можно взять, например, тут: http://topby.by/js/jquery.form.js

Далее, вешаем обработчик на страницу:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var options = {
dataType: "json",
beforeSubmit: function () {
// тут можно написать код, который будет выполняться до ответа сервера. как правило, нужно показать крутящуюся картинку
},
success: function (response, statusText) {
// если делали крутящуюся картинку, то тут ее убираем
 
if (response.error === true) {
// сообщаем об ошибке
alert(response.message);
} else {
// все ок
alert(response.message);
}
},
type: "post"
};
 
$(document).ready(function () {
$("#formAJAXSubmit").submit(function (e) {
e.preventDefault();
$(this).ajaxSubmit(options);
return false;
});
});

Переменная options - это настройки для плагина jquery.form. Надеюсь, из комментариев будет понятно что к чему.
$("#formAJAXSubmit") - это id формы. Т.е. <form id="formAJAXSubmit"...> Само собой, id может быть и другим, и вообще форму можно находить по любым другим доступным атрибутам.
На сервере собираем ответ в виде обычного массива, и пакуем в JSON. Пример:

Код:

1
span style="color: #0000BB"><?php$response = array('error' => false, 'message' => 'Запрос успешно выполнен');echo json_encode($response);

вот и все... вместо JSON можно использовать XML, HTML может еще что-то, о чем я забыл, но настоятельно рекомендую пользоваться именно JSON.

TLENS » 2011.02.08 14:33

Спасибо

TLENS » 2011.02.08 20:35

Слушай я чет ничего не пойму мне json не нужен почему оно не работает?

Код:

1
2
3
4
5
6
var options = {
dataType: "html",
beforeSubmit: function () {},
success: function (msg) {$("#content-center").append(msg);},
type: "post"
};
Gemorroj » 2011.02.08 20:46

1) выпрямляй код, уверен, что там мешанина из sql + php + html, отсюда и "мне json не нужен".
2) весь код давай.
3) в твоем коде beforeSubmit можно опустить, а success вообще-то должна принимать 2 параметра. 2 отвечает за статус самого XmlHttpRequest запроса, и по хорошему его тоже нужно отслеживать.

TLENS » 2011.02.08 20:50

Этот код работает но надо чтобы без json

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.5.js"></script>
<script src="form.js"></script>
</head>
<body>
<script>
 
 
var options = {
dataType: "json",
success: function (response, statusText) {
$("p").append(response.message);
},
type: "post"
};
 
 
 
 
$(document).ready(function () {
$("form").submit(function (e) {
e.preventDefault();
$(this).ajaxSubmit(options);
return false;
});
});
</script>
<form method="post" action="file.php">
<input type="submit" name="1" value="1" />
</form>
<p></p>
 
</body>
</html>

Добавлено спустя   3 минуты  3 секунды:
У меня просто wap i web версия.
И если вап тема то я туда добавляю тему.
А если web html просто планирую разные темы и flash хочу
Вощем я подумал надо без jsona
Добавлено спустя   5 минут  39 секунд:
Еще вопрос чем заменить append чтобы рядом не добавляло.
Пробувал("p").innerHTML = (response.message);
чет не работает.

TLENS » 2011.02.08 21:01

выпрямляй код, уверен, что там мешанина из sql + php + html

Я ещё к движку не подключал его, покаместь тестирую

Gemorroj » 2011.02.08 21:12

сравни.
и никогда не пиши js код вперемешку с html. выноси его в отдельные файлы.
Добавлено спустя    44 секунды:
TLENS, почитай про jQuery прежде чем использовать.

TLENS » 2011.02.08 21:14

Да понятно я просто тестирую а так у меня оно в папке с темой

TLENS » 2011.02.08 22:35

Слушай ну правда зачем  json.
Он и теги возвращает экранирование.
я вот не пойму как без json.

Код:

1
2
3
4
5
6
7
var options = {
dataType: "html",
success: function (response, statusText) {
$("#test").append(response);
},
type: "post"
};

Тоже не кактит

TLENS » 2011.02.08 22:47

.text заменил на .html но все равно.
Зачем json?

Gemorroj » 2011.02.08 22:56

за тем, то ты работаешь с ДАННЫМИ, а отображение пускай делает шаблон.

TLENS » 2011.02.08 23:33

Да нет все таки если бы я еще толком знал javascript.
Это вообще возможно а то я ищу а такого и нельзя делать?
Добавлено спустя   6 минут  21 секунду:
Не ну это не реально надо будет переделывать полностю все.
Добавлено спустя   8 минут  2 секунды:
Надо чтобы просто вставляло страницу в страницу.
Дай пример пожалуйста.

TLENS » 2011.02.09 00:41

Уже начал свою функцию писать аж тут заглянул на документацию удивительно что раньше не додумался оно ведь все так просто

Код:

1
2
3
4
5
$(document).ready(function(){
$('form').ajaxForm(function(data){
$('#content').html(data);
});
});

Но все таки пригодится и json им ввод хорошо проверять.

TLENS » 2011.02.09 03:31

Слушай геморой я тут столкнулся с проблемой.
Почему не вызывается jqyery в полученом коде через ajax.
Точнее вызываются но при повторном вводе функции.
файл test1.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script src="form.js"></script>
</head>
<body>
<script>
 
$(document).ready(function(){
$('form').ajaxForm(function(data){
$('#form').html(data);
});
});
</script>
 
<div id="form">
 
<form method="post" action="test2.php">
<input name="test" />
<input type="submit" name="post" value="go" />
</form>
 
</div>
 
 
</body>
</html>

файл test2.php

Код:

1
2
3
4
<form method="post" action="test2.php">
<input name="test" value="Введено <?=$_POST['test']?>" />
<input type="submit" value="Ввести еще раз?" />
</form>

При нажатии на кнопку go в test1.php срабатывает ajax и меняет форму на ту что в test2.php
Но при новом нажатии на кнопку Ввести еще раз? перебрасует на test2.php

Что за глюк где я уже напортачил?
Помоги плис исправить чтобы при нажатии на Ввести еще раз? срабатывал поновой ajax и обновлял html.

Gemorroj » 2011.02.09 08:54

return false;
почитай хотя бы основы JavaScript. Очень грязный код. Впрочем как и <?=$_POST['test']?>

TLENS » 2011.02.09 17:39

Сейчас качаю Денис Хомич - Видеокурс JavaScript. Больше, чем просто сайт.
По отзывам вроде хороший урок.
Но это на долго с платника качается 1.5гб.
Еще 8 часов осталось и уже час качаю.

TLENS » 2011.02.09 18:23

Геморрой ну ничего не пойму уже и вставил в функцию return false;

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.5.js"></script>
<script src="form.js"></script>
<script>
var form = '<form method="post" action="file.php?get=1"><input name="test" /> <input type="submit" name="post" value="go" /></form>';
$(document).ready(function(){
$("form").submit(function (e)
{
e.preventDefault();
$('#form').html(form);
return false;
});
});
</script>
</head>
<body>
<div id="form">
<form method="post" action="file.php?get=1">
<input name="test" />
<input type="submit" name="post" value="go" />
</form>
</div>
</body>
</html>

Меняю добавляю onSubmit="return false;" в переменную form <form onSubmit="return false;"...
Не хочет вызывать $("form").submit
В чем дело, почему форма при втором клике отправляет на экшен, возможно зделать чтобы jquery находил тег в по вставленном тексте?

Gemorroj » 2011.02.09 20:02

ты же заменяешь форму сам. я вообще не понимаю что за кашу ты пишешь? стандартная процедура - оправил данные на сервер, получил JSON (XML), вставил данные в HTML.

TLENS » 2011.02.09 20:35

Ну вот смотри я хочу сделать 3 блока.
В каждый из них подгружаю разные страницы с папки pages.
И чтобы в каждой под груженой страничке можно было работать Java Скриптами
Ну например frame там можно ходить по ссылкам куда хочь.
Но только чтобы при вызове в фреймовом окне можно было управлять другими окнами.

Gemorroj » 2011.02.09 23:19

не пиши никогда "Java Скриптами" - это не грамотно. пиши JS или JavaScript.
если тебе нужна какая-то особая форма смотри в сторону ExtJS (Sencha) или аналогов. Фреймы - это плохо в любом случае.

TLENS » 2011.02.11 03:31

Да никакой особой не надо было просто ты прав был что мне надо было хотя бы основы посмотреть.
Проблема у меня была такова что когда я подгружал код в страницу, то он уже не был обработан jquery. Так как при загрузке думпа того кода еще не было.
Мда пока раздуплил те объекты да ито толком еще не раздуплил.
Сижу сейчас морали слушаю от Хомича
У меня идея появилась

Код:

1
2
3
4
5
6
7
8
9
10
$(document).ready(function(){
function myform(){
$('form').ajaxForm(function(data){
$('#content-center').html(data);
myform();
});
}
myform();
});

Такой вариант работает как надо.