2012-04-06 7 views
2

Ich habe nach einer Möglichkeit gesucht, die Information (Zeichenfolge) aus einer Variablen auf der vorherigen Seite hinzuzufügen.Variablen hinzufügen (Textfeld angeben) auf der vorherigen Seite

Soweit ich weiß, sollte dies mit Javascript irgendwie möglich sein.

Neue ein konnte die alte nicht bekommen richtig zu arbeiten ..

<script type="text/javascript"> 
function newPopup(url) { 
    popupWindow = window.open(
     url,'popUpWindow','height=510,width=350,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes') 
} 
</script> 
<a href="JavaScript:newPopup('(url)');">Armory Avatar</a> 

Ich habe dieses Stück Code, der den Link in einem neuen Popup-Fenster öffnet (das die URL der vorherigen erinnert Seite). In diesem Fenster können Personen einige Informationen über ihren WoW-Charakter und den Bereich, in dem sich dieser Charakter befindet, einfügen. Nachdem sie dies getan haben und auf "submit" geklickt haben, zeigt die Site die URL für den Avatar an, der aus der Blizzard-Waffenkammer stammt.

http://eu.battle.net/static-render/eu/(imagepath)

-Code für die Popup-Seite: diesen aktuellen Code Aktualisiert (7-4-2012)

<?php 
if (!isset($_POST['submit'])) { 
?> 
<!-- The fill in form --> 
<html> 
<head> 
<title>Armory Avatar</title> 
</head> 
<body> 
<form method="post" action="<?php echo $PHP_SELF;?>"> 
Character Name:<input type="text" size="12" maxlength="50" name="cname"><br /> 
Realm Name: 
<select name="rname"> 
<optgroup label="English Realms"> 
<option value="aerie-peak">Aerie-Peak</option> 
<option value="agamaggan">Agamaggan</option> 
<option value="aggramar">Aggramar</option> 
etc etc etc. 
</optgroup> 
</select><br /> 
<input type="submit" value="submit" name="submit"> 
</form> 
<?php 
} else { //If form is submitted execute this 

    $charname = $_POST["cname"]; //input character name 
    $realmname = $_POST["rname"]; //input realm name 

    $charurl = urlencode(utf8_encode($charname)); //prepares character name for url usage 
    $realmurl = 'http://eu.battle.net/api/wow/character/'.$realmname.'/'; //combines the basic url link with the realm name 
    $toon = $realmurl.$charurl; //adds the charactername behind the realm url 
    $data = @file_get_contents($toon); //retrieves the data from the armory api 
     if ($data) { 
      // if armory data is found execute this 

      $obj = json_decode($data); //converts the data from json to be used in the php code ?> 
      <img src='http://eu.battle.net/static-render/eu/<?php echo $obj->thumbnail; ?>'> </img><br /> <?php //Is url link to image 
      $armoryname = utf8_decode($obj->name); //makes the name readable again 
      echo "Name: " . $armoryname . "<br />"; //character name 
      echo "Level: " . $obj->level . "<br />"; //character level 
      echo "Achievement Points : " . $obj->achievementPoints . "<br />"; //Achievement Points 
      if ($obj->gender == 1){ //Deteremines the gender of the character 
       echo "Gender : Female <br />" ; //displays gender as female 
      }else{ 
       echo "Gender : Male <br />" ; //dispalays gender as male 
      } 
      $image = "http://eu.battle.net/static-render/eu/".$obj->thumbnail; 
      ?> 
      Image: <a href='http://eu.battle.net/static-render/eu/<?php echo $obj->thumbnail; ?>'> http://eu.battle.net/static-render/eu/<?php echo $obj->thumbnail; ?></a><br /> 


      <!--Button submit code--> 

      <script type="text/javascript"> 
      $('button.cancel_link').click(function() { 

      // Change the value of the input with an ID of 'avatarurl' 
      // with the dynamic value given to you by the external JSON link 

      window.opener.getElementById('avatarurl').value = '<?php echo $image; ?>'; 

      }); 
      </script> 
      <input> <!-- The button here --> 



     <?php 



     } 
     else { // if armory data is not found execute this ?> 

      error code stuf 
     } 
} 
?> 

Jetzt muss ich diese Codezeile:

$ image = "http://eu.battle.net/static-render/eu/". $ Obj-> thumbnail;

Zurückgeben, wenn das Fenster geschlossen ist, oder einfach durch Drücken einer anderen Übergabetaste (bevorzugt auf Schließen-Schaltfläche). Und wenn eine der beiden geschehen muss es dies in dieser Zeichenfolge einzufügen:

<input type="text" class="textbox" name="avatarurl" size="25" maxlength="100" value="{$avatarurl}" /></td> 

Die texbox genannt avatarurl.

Hoffentlich weiß jemand von Ihnen, wie man ein Javascript ändert oder erstellt, das das für Sie tut. Da mein PHP schon stark eingeschränkt ist und mein JavaScript-Wissen so gut wie nicht ist.

Antwort

2

Sie müssen ändern, wie Sie Ihr Popup-Fenster schließen. Probieren Sie etwas wie folgt aus:

// When a BUTTON with the class name 'cancel_link' 
// is clicked, it activates the following 

$('button.cancel_link').click(function() { 

    // Change the value of the input with an ID of 'avatarurl' 
    // with the dynamic value given to you by the external JSON link 

    window.opener.getElementById('avatarurl').value = '<?php echo $image; ?>'; 

}); 

Sie müssen sicherstellen, dass Ihre Schließung Link cancel_link als Klassennamen hat, und dass Ihr Eingangselement in Ihrem Stammdokument hat eine ID von avatarurl.

+0

Sie sprechen über einen Link mit dem Klassennamen 'cancel_link' Ich denke, Sie dachten eine Schaltfläche mit diesem Klassennamen oder? Die zweite Frage: Der zurückgegebene Wert ist nur der letzte Teil der URL. Wäre es nicht einfacher $ image zurückzugeben? Seitdem habe ich sofort die komplette URL. – Anori

+1

Ja, in beiden Fällen hast du Recht - ich werde meine Lösung aktualisieren – hohner

+0

Die einzige Frage, die ich jetzt habe, ist: ID von 'avatarurl' welche ID kennst du genau damit, da ich keine ID-Nummer finden kann. – Anori

0

Also nach der Suche versucht und dank @Jamie wusste ich wo ich suchen soll.

Ich fand http://www.codingforums.com/showthread.php?t=213298 Und das war schließlich das, was funktionierte.

Auf der PHP-Seite, es zu öffnen i hinzugefügt:

<script type="text/javascript"> 

function open_pop(){ 
window.open('armory.php','AvatarArmory','height=510,width=350,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes') 
} 
</script> 
<html> 
..... 
<input type="button" value = "OpenArmory" onClick="open_pop()" /> 

Und hinzugefügt id="blogbox" an den Eingang für das Textfeld.

<input type="text" class="textbox" name="avatarurl" size="45" value="{$avatarurl}" id="blogbox"/> 

Auf der armory.php Seite hinzugefügt ich diese Taste mit der Funktion JavaScrip:

<script type="text/javascript"> 

      function pops(avatar){ 
      textcontent=opener.document.getElementById("blogbox").value; 
      opener.document.getElementById("blogbox").value = textcontent + " " + avatar; 
      } 
      </script> 
      <input type="button" value = "Insert Avatar.." onClick="pops('<?php echo $image; ?>');window.close()" /> 

Und das funktionierte perfekt.

Danke Jamie für die Hilfe.

Verwandte Themen