| Autor | Zpráva | ||
|---|---|---|---|
| kedarh Profil |
#1 · Zasláno: 25. 2. 2013, 20:24:00
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! |
||
| final Profil |
#2 · Zasláno: 25. 2. 2013, 20:47:16
pomocou ajaxu
|
||
| Joker Profil |
#3 · Zasláno: 25. 2. 2013, 21:02:10
kedarh:
Viz časté otázky v PHP sekci a Jak přenést proměnnou z javascriptu do PHP |
||
| kedarh Profil |
#4 · Zasláno: 25. 2. 2013, 21:12:57
Děkuji za odpovědi.
Ale už jsem to všechno dávno prošel a prostě mi to nejde... Nevím jak dostat "hodnotu" textu do: mysql_real_escape_string($_REQUEST['term']) Ať se snažím jak chci, zatím nic nefungovalo... |
||
| shaggy Profil |
#5 · Zasláno: 25. 2. 2013, 21:19:06
kedarh:
1. prečítal si si, čo je na stránke v[#3]? Všetky rady? 2. ukáž nám celý tvoj kód (javascriptové volanie aj php časť), nie iba jeden riadok. |
||
| pcmanik Profil |
#6 · Zasláno: 25. 2. 2013, 21:19:23
kedarh:
V PDO na ošetrenie dát slúži iná funkcia. Ukáž nám svoj JS kód, ako sa snažíš dostať ten text na stranu serveru. |
||
| kedarh Profil |
#7 · Zasláno: 25. 2. 2013, 21:32:22
Tohle je celý můj JS kod:
<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) {
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 search()
{
makeRequest('../neco.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>Teď tam nemám žádný kod pro dostaní textu na stranu serveru. Nejsem zas tak pokročilý, proto se ptám Vás. Šlo by to udělat podobně jako jQuery(document).ready(function(){
$('#place_text').autocomplete({source:'../auto.php', minLength:1,});
});U toho mám php kod takovyhle a vše funguje v pořádku <?php
require_once("config/config.php");
if ( !isset($_REQUEST['term']) )
exit;
$dblink = mysql_connect($server, $username, $password) or die( mysql_error() );
mysql_select_db($database);
$rs = mysql_query('select places from markers where places like "'. mysql_real_escape_string($_REQUEST['term']) .'%"order by places', $dblink);
$data = array();
if ( $rs && mysql_num_rows($rs) )
{
while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
{
$data[] = array(
'label' => $row['places'] ,
'value' => $row['places']
);
}
}
echo json_encode($data);
flush();
?>PHP část jsem zveřejnil v první příspěvku. Jde mi o to, že když v <input id="place_text" type="text" class="input-xlarge" /> |
||
| kedarh Profil |
#8 · Zasláno: 25. 2. 2013, 23:11:15
Zkoušel jsem
$("#place_text").keyup(function()
{
var search = $(this).val();
var dataString = 'term='+ search;
$.ajax({
type: "GET",
url: "../xml.php",
data: dataString)}
}ale bohužel nefunguje... |
||
| Joker Profil |
#9 · Zasláno: 26. 2. 2013, 06:36:58
kedarh [#8]:
„bohužel nefunguje“ Dost možná funguje a ty požadavky odesílá, potíž je, že pak nic nedělá s vrácenými daty. Chybí tam ještě success : function (data) { /* zpracuj data */ }
|
||
| kedarh Profil |
A potřebuji něco dělat pak s těmi data? Protože stačí když tam jen odešlu data, o navrácení dat se mi postará neco.php, kde mi data vrátá v JSONU... A tt mi to zpracují již napsané funkce... nebo se pletu? Děkuji za odpověď.
|
||
| Joker Profil |
#11 · Zasláno: 26. 2. 2013, 12:46:24
kedarh:
„A potřebuji něco dělat pak s těmi data?“ No to já nevím :-) Ale asi jo. Může být požadavek, který nic zajímavého nevrací a cíl je jen udělat nějakou akci na serveru. Ale i tak by se alespoň mělo návštěvníkovi dát najevo, jestli byl úspěšný nebo skončil chybou. Ale už vzhledem k tomu, že to má vracet nějaká data v JSONu bych předpokládal, že je pak chcete převzít a nějak prezentovat. „mi data vrátá v JSONU... A tt mi to zpracují již napsané funkce.“ A kde je funkce, která převezme a zpracuje výsledek toho požadavku? (Normálně právě to totiž mají zařídit success a error, které v ukázce nejsou definované.) |
||
| kedarh Profil |
#12 · Zasláno: 26. 2. 2013, 13:09:25
Už jsem to pochopil. Když napíšu:
jQuery(document).ready(function(){
$('#place_text').keyup(function()
{
var search = $(this).val();
var dataString = 'term='+ search;
$.ajax({
type: "GET",
url: "../xml.php",
data: dataString,
success : function (data) {
alert(data);
window.location.href = "index.php"; }
});
}
)});Vrátí mi to dialogový okno s hodnotama, který potřebuji. Problém je, že mi to vrací hned jak napíšu první charakter kvůli: $('#place_text').keyup(function()Šlo by tam použít něco jiného? Co by mi jen jakoby získalo celou hodnotu textu? A pak vlastně po odeslání textu AJAXEM do neco.php, by měla tu hodnotu přebrat: mysql_real_escape_string($_REQUEST['term']) v sql dotazu, kde se provede sql dotaz a uloží se mi hodnoty do $markers. A přes function displayLocation(markers) se zobrazí výsledky na mapě... |
||
| Joker Profil |
#13 · Zasláno: 26. 2. 2013, 13:16:48
kedarh:
Tak použijte událost onchange místo onkeyup. |
||
| kedarh Profil |
#14 · Zasláno: 26. 2. 2013, 13:32:24 · Upravil/a: kedarh
Tak jsem to udělal takhle:
function test_ajax(){
var term = $('#place_text').val();
var dataString = 'term='+ term;
$.ajax({
type: "GET",
url: "../xml.php",
data: dataString,
success : function (data) {
alert(data);
window.location.href = "index.php"; }
})
};Po zmáčknutí tlačítka hledat se zavolá test_ajax() a vrátí mi požadovaný výsledek. Bohužel se pak nic nestane, což asi tedy znamená, že tato hodnota se nepředala do: mysql_real_escape_string($_REQUEST['term']) Je nějaká možnost jak to otestovat? Děkuji. AJAXem tedy předávám hodnotu textu do url, ale potřeboval bych to udělat tak, abych dostal hodnotu do toho php souboru... nějaký nápad? |
||
| Joker Profil |
#15 · Zasláno: 26. 2. 2013, 14:04:51
kedarh:
Tak se podívejte v nějakém nástroji na zachytávání odesílaných požadavků a odpovědí, co se posílá. Nejspíš budou špatně předávaná ta data. Nevím, jaké všechny způsoby jQuery umožňuje, ale standardně to bývá přes JSON nějak takhle: data: {term : $('#place_text').val()} |
||
| kedarh Profil |
#16 · Zasláno: 26. 2. 2013, 14:47:41
Děkuji, moc mi to pomohlo. Mám to takhle
$.ajax({
type: "POST",
url: "../xml.php",
data: {term : $('#place_text').val()},
success : function (data) {
alert(data);
window.location.href = "index.php"; }
})
};Hodnota textu se už předává. Teď už jenom vyřešit, kam ten kod AJAXU mam vlozit, aby pri zavolání ostatnich funkci ta hodnata tam byla... |
||
|
Časová prodleva: 13 let
|
|||
0