webForumDet fria alternativet

load() jquery, ajax, hur få javascripten att fungera på load-sidan?

7 svar · 1 128 visningar · startad av apaaa

apaaaMedlem sedan nov. 200559 inlägg
#1

Hallå!

Jag har ett litet script där jag kör en aktiv sökning.
Problemet är att en del av javascripten(jquery) inte fungerar på den sidan jag ladda in.

Jag har provat både med jquerys load()-funktion samt vanliga gamla ajax.

Koden just nu ser ut följande:

var xmlhttp;

function showquery(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }

var patt1 = /DASENID/i;
var str1 = str.match(patt1);

if (str1 == "DASENID") 
	{
		var str2=str.lastIndexOf("DASENID");
		var str3=str.slice(0,str2);
		var str4=str2+7;
		var str5=str.slice(str4);
		var url="bin/query.php?show="+str3;
		var str=str.replace("DASENID", "");
		url=url+"&q="+str5;
	}
else
	{
		var url="bin/query.php";
		url=url+"?q="+str;
	}
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

Sen i resultatet så har jag en bild där jag kör en hide() samt sen show() funktion med hjälp utav ett ID. Men det vägrar fungera. Det fungerar när jag kör scriptet på ett ID som finns på själva huvudsidan.

$(function() {
   $('#edit').hide();
   $("#editShow").click(function() {
            	$('#edit').show();
       });
   $("#editClose").click(function() {
            	$('#edit').hide();
       });
 });

Hur ska man göra för få bukt på det här?

apaaaMedlem sedan nov. 200559 inlägg
#2

Nu har jag nästan fått det att fungera. Nu är det bara det att jag måste klicka på knappen två gånger innan det fungerar, varför?

   
$('#edit').hide();
 });
function editID(id){
if (confirm('Editera produkt?')) {
$.post('test2.php', {id: +id, ajax: 'true' },
function(){
   $("#editShow").click(function() {
            	$('#edit').show();
       });
   $("#editClose").click(function() {
            	$('#edit').hide();
       });
});
}
}

Den här div'en ligger längst ner i includefilen

echo '<div id="edit" class="editID">';
$apa = $editID;
include("adminedit.php");
echo '</div>';

Jag måste blocka den i början annars dyker den upp, jag antar att man måste "refresha" sidan i själva klickfunktion en gång på något sätt.

voigtann1Medlem sedan juni 20019 519 inlägg
#3

dina javascripts koder innehåller rätt mycket fel, och jag ser inte var du anropar dina funktioner.
#editShow, #editHide, var kommer dom ifrån? är det ifrån ditt ajax anrop (vilket jQuerys load är) så måste du binda om dina events då de element inte finns när sidan laddas första gången, du kan köra med ett live event om du kör jQuery version 1.3 eller högre.

var vill du placera ditt ajax anrop, response texten måste komma till något element på sidan, just nu körs den bara och vågar inte ens tänka på var den placeras.

skrivit om ditt javascript med lite mer struktur så man få en bättre syn på vad du försöker göra:

$('#edit').hide();

function editID(id){
	if (confirm('Editera produkt?')) {
		$.post('test2.php', {id: +id, ajax: 'true' }, function(){
			$("#editShow").click(function() {
				$('#edit').show();
			});
			$("#editClose").click(function() {
				$('#edit').hide();
			});
		});
	}
}
apaaaMedlem sedan nov. 200559 inlägg
#4

Hur menar du placera?

#editShow och #editHide är bundna till två bilder, den ena med id="editShow" och det andra id="editHide".

Hur placerar jag ett ajax anrop?

Mvh Anders.

apaaaMedlem sedan nov. 200559 inlägg
#5

Nu har jag i.a.f. fått det att fungera men påpeka gärna hur jag binder ajax anropen så jag får koden riktig.

$(function() {
   $('#edit').hide();
   $("#editShow").live('click', function() {
            	$('#edit').show();
       });
   $("#editClose").live('click', function() {
            	$('#edit').hide();
       });
 });

Mvh Anders.

voigtann1Medlem sedan juni 20019 519 inlägg
#6

apaaa skrev:

Hur menar du placera?

#editShow och #editHide är bundna till två bilder, den ena med id="editShow" och det andra id="editHide".

Hur placerar jag ett ajax anrop?

Mvh Anders.

Utan att få reda på hur dina HTML dokument ser ut så är det i princip omöjligt att hjälpa dig.

du skriver att du binder det till två bilder, när kommer bilderna? Är det i orginal dokumentet eller är det den AJAX-anropet som appendar dessa två bilder?

apaaaMedlem sedan nov. 200559 inlägg
#7

Bilderna kommer i ajax-anropet, funktionen showquery(str).

Mvh Anders.

voigtann1Medlem sedan juni 20019 519 inlägg
#8

Var visas AJAX anropet?
Kör en load istället om du skall presentera något, $.post() har givetvis en success också men det kör du inte heller just nu, läs om load: http://api.jquery.com/load/ kommer göra susen för ditt problem

135 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)