#php #jquery #ajax
#php #jquery #ajax
Вопрос:
Я попытался реализовать следующий код:
это EditSet.php файл:
<?php
function sanitizeString($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
$var = stripslashes($var);
return mysql_real_escape_string($var);
}
$selectedset = sanitizeString($_GET['selectedset']);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
$(document).ready(function() {
$("#viewresult input:button").click(function () {
$.get("EditSet.php", "selectedset=Ceremony", function(){
<?php
$query = "select imgid from imageinfo where setname='$selectedset' ORDER BY id DESC limit 1";
$result = mysql_query($query);
$row = mysql_fetch_object($result);
$imgid = $row->imgid;
echo "$("#setimg").fadeIn("slow").html('<img src="edituploads/$imgid "/>'); ";
?>
});
});
});
</script>
</head>
<body>
<div style="float:left;border:1px solid #aaa;"id="setimg"><img src="item.png"/></div>
</body>
</html>
Я думаю, что EditSet.php не получил переменную $get[], потому что, когда я меняю следующее:
$query = "select imgid from imageinfo where setname='$selectedset' ORDER BY id DESC limit 1";
Для:
$query = "select imgid from imageinfo where setname='Ceremony' ORDER BY id DESC limit 1";
Правильное изображение отображается в div «setimg», поэтому оно работает нормально, что-то не так с функцией get, любой может мне помочь, большое спасибо. Я пропустил функцию подключения к базе данных, так что не волнуйтесь, если я ее показал.
Ответ №1:
Эта проблема сбивает с толку, потому что ваш AJAX вызывает страницу, на которой находится скрипт .. змея, так сказать, ест свой хвост. Но имейте в виду, что PHP и JavaScript не могут работать в таком тандеме, потому что PHP отображается на странице до запуска AJAX.
Если вы выполняете вызов AJAX для другого файла, причина, по которой он не работает, становится более очевидной.
index.php
<script>
$.get('ajax.php?meh=ohi',function(){
alert("<?php echo $_GET['meh'];?>")
});
</script>
$ _GET [‘meh’] будет отображаться при загрузке страницы index.php , НЕ ajax.php , и ваш JavaScript теперь будет выглядеть следующим образом:
<script>
$.get('ajax.php?meh=ohi',function(){
alert("")
});
</script>
И $ _GET [‘meh’] будет потерян на ветру.
Решение состоит в том, чтобы поместить ваш JS на главную страницу, а все средства очистки PHP и MySQL в отдельный файл. Весь скрипт выглядит примерно так —
index.php
<script>
$.get('ajax.php?selectset=ohi',function(data){
alert(data)
});
</script>
ajax.php
<?php
// mysql stuff, sanitize string stuff, etc..
$selectset = $_GET['selectset'];
echo $selectset;
// whatever you echo out here will be assigned to 'data' and alerted
?>
Комментарии:
1. чувак, это потрясающе, большое тебе спасибо, надеюсь, ты сможешь помочь мне и в будущем