переменная $.get [] не получена

#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. чувак, это потрясающе, большое тебе спасибо, надеюсь, ты сможешь помочь мне и в будущем