| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
ynfonet
Data înscrierii: 14/Dec/2005
Mesaje: 124
|
| Trimis: Mar Sep 02, 2008 10:28 am Titlul subiectului: Trimitere blank-uri intr-o fct AJAX |
|
|
Buna ziua
am urm cod:
==========
Cod:
<script type="text/javascript" language="javascript">
function createXmlHttpObject(){
var xmlHttp;
try { // Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}catch(e){ //Internet Explorer
try{
xmlHttp = new ActiveObject("Msxml2.XMLHTTP");
}catch(e){
try {
xmlHttp = new ActiveObject("Microsoft.XMLHTTP");
}catch(e){
alert ("Your browser does not support AJAX!");
return;
}
}
}
return xmlHttp;
} //END function GetXmlHttpObject
function showField(fieldID,fieldValue){
var fid = fieldID;
var fval = fieldValue;
xmlHttp = createXmlHttpObject();
var url = "valid.php";
url = url+"?fid="+fid+"&fval="+fval;
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("showData"+fid).innerHTML = xmlHttp.responseText;
}
} //END functionstateChange
xmlHttp.open("GET",url,true);
xmlHttp.send();
} //END function validateField
iar la apelarea functiei:
Cod:
onclick=showField(this.id,'".$val1."')
vreau sa incarce
Cod:
$val1 = "aaa bbb ccc ".$ct1." ddd ";
$ct1=1111111;
insa imi apare msg de err, si nu imi ruleaza functia
Datorita spatiilor din stringul trimis la server.
Cum pot ciompensa aceasta deficienta (si eventual alte caractere speciale)?
Multumesc anticipat[/code] |
|
| Sus |
|
Amenthes
Data înscrierii: 12/Dec/2005
Mesaje: 620
|
| Trimis: Mar Sep 02, 2008 10:32 am Titlul subiectului: |
|
|
http://developer.mozilla.org/index.php?title=En/Core_JavaScript_1.5_Reference/Global_Functions/EncodeURI&highlight=encodeURI
http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent
si ca fallback:
http://developer.mozilla.org/index.php?title=En/Core_JavaScript_1.5_Guide/Predefined_Functions/Escape_and_unescape_Functions&highlight=encodeURI |
|
| Sus |
|
ynfonet
Data înscrierii: 14/Dec/2005
Mesaje: 124
|
| Trimis: Mar Sep 02, 2008 11:16 am Titlul subiectului: |
|
|
adica modific linia:
Cod:
url = url+"?fid="+fid+"&fval="+fval;
astfel:
Cod:
url = url+"?fid="+fid+"&fval="+encodeURI(fval);
???
url-ul acela ma duce intr-un fis php
unde am :
valid.php
=======
Cod:
<?php
if(isset($_GET['fid'])) {
$fid = $_GET['fid'];
$fval = $_GET['fval'];
echo $fval;
?>
In acest fis. $fval nu este codat?
Cum revin aici la forma lui initiala?
Multumesc anticipat |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu
|
| Trimis: Mar Sep 02, 2008 11:20 am Titlul subiectului: |
|
|
| Recomand sa folosesti encodeUriComponent, nu encodeUri. In plus, nu trebuie sa iti bati capul, variabilele vor fi trimise la request cum trebuie (escaped), si interpretate ca atare de codul php (unescaped). |
|
| Sus |
|
ynfonet
Data înscrierii: 14/Dec/2005
Mesaje: 124
|
| Trimis: Mar Sep 02, 2008 1:31 pm Titlul subiectului: |
|
|
Cod:
$val1 = "aaa bbb ccc ".$ct1." ddd ";
$ct1=1111111;
devine:
Cod:
$val1 = "AAA bbb CCC".$ct1."ddd ". $ct2 ."";
$ct2 = "(stare IS NULL OR TRIM(stare)='') AND TRIM(valid)='OK'";
$ct2 se vrea a fi o instructiune mysql ('SELECT ... FROM table1 WHERE $ct2 GROUP BY ... ORDER BY...')
la transmiterea $ct2 in forma aceasta nu raspunde
Cum as putea trimite acele caractere?
Multumesc anticipat |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu
|
| Trimis: Mar Sep 02, 2008 1:54 pm Titlul subiectului: |
|
|
| Mda, un asemenea string e cam greu sa il trimiti prin GET. Recomand sa folosesti AJAX POST sa trimiti valorile ( http://www.openjs.com/articles/ajax_xmlhttp_using_post.php ) |
|
| Sus |
|
olympia
Data înscrierii: 26/Mai/2008
Mesaje: 179
|
| Trimis: Mar Sep 02, 2008 4:00 pm Titlul subiectului: |
|
|
dupa parerea mea, sunt mai multe probleme:
- xmlHttp.send(null); //fara null merje doar pe IE
- onclick=showField(this.id,'".$val1."') //de unde 'this'? cred ca trebuie sa trimiti argumentele functiei si atat. in plus, ceva nu pare corect aici. ai un handler js in string php? dk nu, de ce $val1 nu e in taguri php cu echo?
- este nerecomandat sa trimiti o interogare sql in ajax. interogarea o ai in scriptul de prelucrare - in ajax trimiti doar variabilele (e o vulnerabilitate majora);
n-am timp sa mai uit mai mult, asta e ce pare la prima vedere. problema nu e din cauza ca trimiti "blankuri". |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |