2016-04-17 7 views
0

Sorry für den Titel Gore - ich bin nicht einmal sicher, was ich wirklich fragen.Verwenden von AJAX zum Posten in PHP - Zurück zum ursprünglichen Skript

Ich habe ein Jquery-Skript, das nach einer Rahmenfarbe sucht. Wenn die Farbe übereinstimmt, wird sie in einem Array gespeichert und an ein PHP-Skript gesendet.

  var fields={}; 
      fields[0]=$('.block0').css("border-color"); 
      var divs={}; 
      divs[0]=$('.block0 h2').html(); 
      //The above are just examples sense the code is a little lengthy 
      var c=0; 
      var i=0; 
      var elements={}; 
      while (c !== 24) 
      { 
       if (fields[c] == "rgb(129, 222, 252)") 
       { 
        elements[i]=divs[c]; 
        alert (elements[i]); 
        i++; 
       } 
       c++; 
      } 
      $.ajax({ 
       url: "process.php", 
       data: elements, 
       type: "POST", 
      }); 

Diese befinden sich alle in einer Datei "hello.php".

Wenn Sie fertig sind, übergibt es die Variablen an ein PHP-Skript namens "process.php". Innerhalb dieses Skripts gibt es ein paar Dinge, die passieren, wie das Ergreifen von mehr Informationen aus einer MYSQL-Datenbank, einer Konfigurationsdatei usw., dann ist mein GOAL, diese zusätzliche Information ZURÜCK an die Datei "hello.php" zu übergeben.

Der Grund, warum ich es so mache, ist, weil ich (mein Bestes) versuche, Umleitungen oder Aktualisierungen zu vermeiden. Ich bin mir nicht ganz sicher, ob ich es richtig mache. Wie auch immer, ich bin an einer kleinen Straßensperre, als ich versuche, die zusätzlichen Informationen von "process.php" zu "hello.php" zu geben. Alle und alle Vorschläge werden sehr geschätzt!

EDIT: Hier einige mehr, pro Anfrage:

hello.php

var openIt=function() 
     { 
      var fields={}; 
       fields[0]=$('.block0').css("border-color"); 
       fields[1]=$('.block1').css("border-color"); 
       fields[2]=$('.block2').css("border-color"); 
       fields[3]=$('.block3').css("border-color"); 
       fields[4]=$('.block4').css("border-color"); 
       fields[5]=$('.block5').css("border-color"); 
       fields[6]=$('.block6').css("border-color"); 
       fields[7]=$('.block7').css("border-color"); 
       fields[8]=$('.mmod2').css("border-color"); 
       fields[9]=$('.mmod3').css("border-color"); 
       fields[10]=$('.mmod4').css("border-color"); 
       fields[11]=$('.mmod5').css("border-color"); 
       fields[12]=$('.mmod6').css("border-color"); 
       fields[13]=$('.mmod7').css("border-color"); 
       fields[14]=$('.mmod8').css("border-color"); 
       fields[15]=$('.mmod9').css("border-color"); 
       fields[16]=$('.ttemp2').css("border-color"); 
       fields[17]=$('.ttemp3').css("border-color"); 
       fields[18]=$('.ttemp4').css("border-color"); 
       fields[19]=$('.ttemp5').css("border-color"); 
       fields[20]=$('.ttemp6').css("border-color"); 
       fields[21]=$('.ttemp7').css("border-color"); 
       fields[22]=$('.ttemp8').css("border-color"); 
       fields[23]=$('.ttemp9').css("border-color"); 
      var divs={}; 
       divs[0]=$('.block0 h2').html(); 
       divs[1]=$('.block1 h2').html(); 
       divs[2]=$('.block2 h2').html(); 
       divs[3]=$('.block3 h2').html(); 
       divs[4]=$('.block4 h2').html(); 
       divs[5]=$('.block5 h2').html(); 
       divs[6]=$('.block6 h2').html(); 
       divs[7]=$('.block7 h2').html(); 
       divs[8]=$('.mmod2 h2').html(); 
       divs[9]=$('.mmod3 h2').html(); 
       divs[10]=$('.mmod4 h2').html(); 
       divs[11]=$('.mmod5 h2').html(); 
       divs[12]=$('.mmod6 h2').html(); 
       divs[13]=$('.mmod7 h2').html(); 
       divs[14]=$('.mmod8 h2').html(); 
       divs[15]=$('.mmod9 h2').html(); 
       divs[16]=$('.ttemp2 h2').html(); 
       divs[17]=$('.ttemp3 h2').html(); 
       divs[18]=$('.ttemp4 h2').html(); 
       divs[19]=$('.ttemp5 h2').html(); 
       divs[20]=$('.ttemp6 h2').html(); 
       divs[21]=$('.ttemp7 h2').html(); 
       divs[22]=$('.ttemp8 h2').html(); 
       divs[23]=$('.ttemp9 h2').html(); 


      var c=0; 
      var i=0; 
      var elements={}; 
      while (c !== 24) 
      { 
       if (fields[c] == "rgb(129, 222, 252)") 
       { 
        elements[i]=divs[c]; 
        alert (elements[i]); 
        i++; 
       } 
       c++; 
      } 
      $.ajax({ 
       url: "process.php", 
       data: elements, 
       type: "POST", 
      }); 

     } 

Es ist hässlich, ich weiß ....

Hier ist ein weiterer Ausschnitt aus hello.php tatsächlich werf die Header und Sachen rein:

<?php 
        $sql = "SELECT * FROM case_info"; 
        $result = mysqli_query($conn, $sql); 
        if (mysqli_num_rows($result) > 0) 
        { 
         $row = array(); 
         while($row[] = mysqli_fetch_array($result)); 
         $max=count ($row); 
         $c=0; 
         while (($max-1) <> $c) 
         { 
          echo '<script> 
            var block'.$c.'=function(){ 
             $(".block'.$c.'").css("border",".15vw solid #81DEFC"); 

            } 
            </script>'; 
          echo '<div onClick="block'.$c.'()" class="block'.$c.'"> 
             <div class="headerbl"><h2>'.$row[$c]["id"].'</h2></div> 
             <p>'.$row[$c]["client"].'</p> 
            </div>'; 
          $c++; 
         } 
        } 

       ?> 

Dann endlich wird es eine neuegeben, die Informationen enthält, wenn ein Benutzer einen dieser "Blöcke" öffnet. Grundsätzlich wird der Benutzer:

  1. Klicken Sie auf „<div class="block0">
  2. Klicken Sie auf Öffnen
  3. Ein neues Overlay-Typ div Weitere Informationen über die spezifische enthalten‚Block‘. Klickte sie denken Sie daran, wie ein“ Read . mehr“Art von Szenario
+0

Bitte geben Sie weitere Details darüber, wo hallo.php in diesem gesamten Prozess beteiligt ist. Was wir anhand Ihres Codebeispiels sehen können, ist eine einfache Array-Manipulation und ein Post to process.php. –

+0

Bearbeitet, lassen Sie mich wissen, wenn Sie mehr brauchen! – Amath1an

Antwort

1

Verwenden ajax Callback-Funktion

$.ajax({ 
     url: 'process.php', 
     type: 'POST', 
     data: data, 
     contentType: false, 
     cache: false, 
     processData: false, 
     success: function(data) { 
      var obj = $.parseJSON(data); 
      alert(obj.result);     
     } 
}); 

Verwenden json Formatdaten, die Variablen von PHP-Skript zu übergeben, sollten in Ihrem PHP-Skript so etwas wie diese:

$jsonArray = array(); 
$jsonArray['result'] = 'result'; 
$jsonArray['data'] = 'data'; 
echo json_encode($jsonArray); 

dann die JSON-Daten analysieren Verwenden Sie in Ihrem JavaScript, das parseJSON() verwendet, obj.result oder obj.data, um die Variable zu verwenden.

+0

Du bist der Mann! Arbeitete wie ein Charme ... so einfach, aber aus irgendeinem Grund hat es einfach nicht mit mir geklickt. Vielen Dank! – Amath1an

0

JQuery AJAX hat eine Funktion, die das tun, was Sie gerade brauchen

Erfolg() Funktion:.

Eine Funktion, die aufgerufen wird, wenn die Anforderung erfolgreich ist. Die Funktion erhält drei Argumente: Die vom Server zurückgegebenen Daten, formatiert nach dem Parameter dataType oder der Callback-Funktion dataFilter, falls angegeben; eine Zeichenfolge, die den Status beschreibt; und das Objekt jqXHR (in jQuery 1.4.x, XMLHttpRequest).

Sie können Ihre Ajax tun, wie folgt:

$.ajax({ 
      url: "process.php", 
      data: elements, 
      type: "POST", 
      success: function(data) { 

       // data is a variable coming from process.php as return value 

      } 
     }); 

Viel Glück Kumpel!

+0

Danke für die Information! Nur aus Neugier, da ich Ajax etwas neu bin (wenn du es noch nicht sagen kannst) und das ergibt für mich logisch keinen Sinn, woher weiß die Jquery was speziell aus dem process.php Skript zu ziehen? Zum Beispiel, wenn ich $ c = 1 in process.php setze, wie würde die Erfolgsfunktion wissen, wie man das ergreift? – Amath1an

Verwandte Themen