Předání hodnoty textu do PHP (Jquery) – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Předání hodnoty textu do PHP (Jquery) – JavaScript, AJAX, jQuery – Fórum – Programujte.comPředání hodnoty textu do PHP (Jquery) – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

kedarh
~ Anonymní uživatel
4 příspěvky
25. 2. 2013   #1
-
0
-

Dobrý den,


mám kod.
HTML

<input id="place_text" type="text" class="input-xlarge" />

neco.php

<?php
require_once("config/config.php");
 
try {
if ( !isset($_REQUEST['term']) )
    exit;
    
        $db = new PDO($dsn, $username, $password);
        $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        
        $places = $db->query("SELECT * FROM markers WHERE places LIKE '%". mysql_real_escape_string($_REQUEST['term']) ."%'");
        $markers = $places->fetchAll();
         
        echo json_encode( $markers );
         
    } catch (Exception $e) {
        echo $e->getMessage();
    }
?>

Ale nevím jak přes Jquery předat hodnotu z input id="place_text" do mysql_real_escape_string($_REQUEST['term'] ...


Neví s někdo rady??


Předem moc děkuji!

Nahlásit jako SPAM
IP: 92.62.224.–
peter
~ Anonymní uživatel
4014 příspěvků
26. 2. 2013   #2
-
0
-

Nechapu tvuj dotaz.

Php na serveru generuje html/css/js kod. Posle pc uzivatele. Uzivatel zobrazi html v prohlizeci. Prohlizec pracuje jen s html kodem.

Bezny zpusob:

prohlizec formular odeslat -> server data prijmout -> php data zpracovat -> php vyrobit html -> odeslat html prohlizeci -> nacist novou stranku

Ajax

- muzes pouzit javascript httprequest

- muzes pouzit javascript jquery http://api.jquery.com/category/ajax/

- muzes udelat iframe s formularem a formular odeslat javascriptem

- muzes pridat do stranky iframe nebo mu zmenit src

- muzes do stranky pridat novy js kod pomoci tagu <script src="novy_kod.php?nazev=hodnota"></script>

Pomoci iframe by to mohlo fungovat takhle nejak:

--- stranka.html ---
<iframe name="xxx" src="xxx.php">
<script>
xxx.form[0].data.value = "123"; // window['xxx'], okno xxx formular cislo nula input data
xxx.form[0].submit(); // odeslat formular
</script>

--- xxx.php ---
<form action="xxx.php" method="post">
<input name="data">
</form>
<?php
echo sprintf('<script>parent.alert("%s");</script>', $_REQUEST['data']); // spustit na html strance javascript v okne parent funkci alert
?>
Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
kedarh
~ Anonymní uživatel
4 příspěvky
26. 2. 2013   #3
-
0
-

Děkuji za odpověď, už jsem to udělal takhle přes AJAX:

$.ajax({
         type: "POST",
         url: "../neco.php",
         data: {term : $('#place_text').val()},
          success : function (data) { 
                                     alert(data);
                                     window.location.href = "index.php"; }
	   })

Hodnota se přenese do

mysql_real_escape_string($_REQUEST['term'])

A výsledek se přes

 alert(data);
 window.location.href = "index.php";

vrátí na index.php.

To vše při zmáčknutí tlačítka hledat.

Tady mám celý JS kod a potřeboval šikovně umístit AJAX tak, aby tam hodnota textu byla zrovna, když volám funkci search(). Protože se mi pak makrers na mapě nezobrazí. Nějaký nápad?? Děkuji mockrát.

 <script type="text/javascript">
 
function init() {
 
    var mapOptions = {
      zoom: 7,
      center: center,
	  disableDefaultUI: true,
      mapTypeId: google.maps.MapTypeId.HYBRID
    }
     
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    
}

 function makeRequest(url, callback) {
    test_ajax();
	var request;
	
	if (window.XMLHttpRequest) {
        request = new XMLHttpRequest(); // IE7+, Firefox, Chrome, Opera, Safari
    } else {
        request = new ActiveXObject("Microsoft.XMLHTTP"); // IE6, IE5
    }
    request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
            callback(request);
        }
    }
    request.open("GET", url, true);
    request.send();
}

var map;
// Střed - geografický střed České republiky
var center = new google.maps.LatLng(49.7417099, 15.33489899999995);
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();


function displayLocation(markers) {
         
    var content =   '<div class="infoWindow"><strong>'  + markers.places + '</strong>'
                    + '<br/>'     + markers.places
					+ '<br/>'     + markers.type
                    + '<br/>'     + markers.desc + '</div>';
     
    if (parseInt(markers.lat) == 0) {
        geocoder.geocode( { 'places': markers.places }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                 
                var marker = new google.maps.Marker({
                    map: map, 
                    position: results[0].geometry.markers,
                    title: markers.places
                });
                 
                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.setContent(content);
                    infowindow.open(map,marker);
                });
            }
        });
    } else {
        var position = new google.maps.LatLng(parseFloat(markers.lat), parseFloat(markers.lng));
        var marker = new google.maps.Marker({
            map: map, 
            position: position,
            title: markers.places
        });
         
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(content);
            infowindow.open(map,marker);
        });
    }
}

function test_ajax(){

$.ajax({
         type: "POST",
         url: "../xml.php",
         data: {term : $('#place_text').val()},
          success : function (data) { 
                                     alert(data);
                                     window.location.href = "index.php"; }
	   })
};




function search()
{

          
makeRequest('../xml.php', function(data) {
var data = JSON.parse(data.responseText);

 for (var i = 0; i < data.length; i++) {
            displayLocation(data[i]);
             
        }
    });

}

jQuery(document).ready(function(){
$('#place_text').autocomplete({source:'../auto.php', minLength:1,});

});




</script>
Nahlásit jako SPAM
IP: 92.62.224.–
peter
~ Anonymní uživatel
4014 příspěvků
27. 2. 2013   #4
-
0
-

Nevim, zda ti uplne rozumim. Ajax je nastaveny obvykle asynchronne, tj v nejakem ne blize urcenem case se data stahnou z webu. Po stahnuti se vola javascriptova funkce, ktera data pouzije.

$.ajax({
         type: "POST",
         url: "../xml.php",
         data: {term : $('#place_text').val()},
          success : function (data) {alert(data);}
    })
};

Muzes udelat tedy to, ze spustis casovac a pockas, az bude nastavena nejaka promenna na true, data nactena, a pak ten casovac zastavi a spusti vykresleni markeru. Nebo to dat do success funkce. Ve tvem pripade v ni mas jen alert. To presmerovani window.location povazuji za nejaky fake :)

search1() {ajax (... success: search2)}

search2(data) {vykresli marker}

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
kedarh
~ Anonymní uživatel
4 příspěvky
28. 2. 2013   #5
-
0
-

Myslíte takhle?

function search()
{
$.ajax({
         type: "POST",
         url: "../xml.php",
         data: {term : $('#place_text').val()},
         success : search2
	   })
}

function search2(data)
{
   makeRequest('../xml.php', function(data) {
   data = JSON.parse(data.responseText);
   for (var i = 0; i < data.length; i++) 
     {
        displayLocation(data[i]);
     }
    })
}
Nahlásit jako SPAM
IP: 92.62.224.–
kedarh
~ Anonymní uživatel
4 příspěvky
28. 2. 2013   #6
-
0
-

Takže už jsem zase o kousek blíž. Pokud zadám jakýkoliv text, vypíše mi to všechny pozice.

JS kod je tenhle

function search()
{
$.ajax({
         type: "POST",
         url: "../neco.php",
         data: {term : $('#place_text').val()},
         success : search2
	   })
}

function search2()
{
   makeRequest('../neco.php', function(data) {
   var data = JSON.parse(data.responseText);
   for (var i = 0; i < data.length; i++) 
     {
        displayLocation(data[i]);
     }
    })
}


A neco.php takhle:

<?php
require_once("config/config.php");

$term = isset($_POST['term'])? $_POST['term'] : '';  
//echo $term;

try {

	
        $db = new PDO($dsn, $username, $password);
        $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
		
        $places = $db->query("SELECT * FROM markers WHERE places LIKE '%".$term."%'");
        $markers = $places->fetchAll();
         
        echo json_encode( $markers );
         
    } catch (Exception $e) {
        echo $e->getMessage();
    }
?>

Jak už jsem psal, po zadání textu se mi vypíší všechny pozice. Nechápu proč, když v SQL dotazu mám

 '%".$term."%', kde je uložný text co napíšu v inputu... Nemám někde chybu?? Děkuji!

Nahlásit jako SPAM
IP: 92.62.224.–
zlz
~ Anonymní uživatel
634 příspěvků
28. 2. 2013   #7
-
0
-

Tak si tam najeb alerty, když to nevidíš.

search udělá request, ve kterém pošle term a odpověď předá search2, kde se udělá další request, ve kterém se nepošle nic a odpověď se zobrazí...  

Nahlásit jako SPAM
IP: 78.156.159.–
peter
~ Anonymní uživatel
4014 příspěvků
28. 2. 2013   #8
-
0
-

Vis

function(data) {
   var data = JSON.parse(data.responseText);
   for (var i = 0; i < data.length; i++)
     {
        displayLocation(data[i]);
     }
    }

se da elegantne zapsat jako..

function search2(data)
{
   var data = JSON.parse(data.responseText);
   for (var i = 0; i < data.length; i++)
     {
        displayLocation(data[i]);
     }
    }

To, co tam mas napsane ty, je volani dalsiho requestu, presne, jak pise zlz, jen pouzivas jinou formu zapisu. Nevim, proc to delas. Ja si myslim, ze to melo byt, jak jsem ti pred chvilkou popsal.

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 23 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý