Error undefined index pada variabel hasil pass javascript ke php

saya ingin bertanya. saya mempunyai error undefined index dari hasil pass dari javascript ke php. padahal ketika saya input text dari javascript dan print ke php, text yang saya tulis di javascript muncul di php. tetapi ketika variabel hasil input dari javascript tsb saya masukan kedalam fungsi yang saya buat hasilnya akan selalu error undefined index.


<html>

<body>
<!-- <script src="loadrecomm.js"></script>  -->
<script src="//code.jquery.com/jquery.min.js"></script>

//INPUT TEKS DISINI!
<script type = text/javascript>
var userinpt = prompt("please enter your username to show recommendation");
</script>

<table border="1">
<tr>
      <th> Places </th>
      <th> Ratings </th>
</tr>

<?php

$useript = "<script>document.write(userinpt)</script>";
echo $useript; //<- DISINI BISA CETAK TEKS DARI JAVASCRIPT
$re = new recommendationengine();
$rec = $re->getRecommendations($places, $useript); //<-KETIKA VARIABEL DIMASUKAN MENJADI 'UNDEFINED INDEX'

foreach($rec as $place=>$rating_value){?>
<tr>
      <td><?php echo $place; ?></td>
      <td><?php echo $rating_value; ?></td>
</tr>
<?php } ?>


</table>
</body>
</html>

avatar renaldykharisma
@renaldykharisma

4 Kontribusi 0 Poin

Diperbarui 5 tahun yang lalu

3 Jawaban:

javascript hanya bekerja di browser php hanya bekerja di server

kalau mau passing data dari html/js(browser) ke php(server) harus pakai form/ajax

dari forum sebelumnya sudah benar pakai ajax coba bungkus $_POST['data'] dan penggunaannya dengan isset

problem undefined: <a href='https://id.ccm.net/faq/1098-cara-mengatasi-undefined-index-error-ketika-menggunakan-variabel-php '>https://id.ccm.net/faq/1098-cara-mengatasi-undefined-index-error-ketika-menggunakan-variabel-php </a>

avatar zerokira
@zerokira

49 Kontribusi 30 Poin

Dipost 5 tahun yang lalu

Tanggapan

iya tapi entah knp tetep aja gagal pake ajax -_-,

coba liat kode ane gan kalo yang pake ajax. knp tetep kena undefined index?

maaf gan udh ga ada error undefined. saya sdh coba yg link agan kasih. tapi kok hasil array saya blm mau keluar ya? tlg pencerahannya

loadrecomm.js

<pre> var userinpt = prompt("please enter your username to show recommendation");

  if(userinpt !== null){

    $.ajax({
    url: &#039;loadrecomm.php&#039;,
    type: &#039;POST&#039;,
    dataType: &#039;text&#039;,
    data: {userinpt : userinpt},
    success: function(response){ 
     //do anything with the response
      console.log(response);
    }       
   });
  }

</pre>

loadrecomm.php

<pre> &lt;html&gt;

&lt;body&gt;

&lt;script src="loadrecomm.js"&gt;&lt;/script&gt;

&lt;table border="1"&gt; &lt;tr&gt; &lt;th&gt; Places &lt;/th&gt; &lt;th&gt; Ratings &lt;/th&gt; &lt;/tr&gt; &lt;?php if (isset($_POST['userinpt'])){

$useript = $_POST['userinpt'];

$re = new recommendationengine(); $rec = $re-&gt;getRecommendations($places, $useript);

foreach($rec as $place=&gt;$rating_value){?&gt; &lt;tr&gt; &lt;td&gt;&lt;?php echo $place; ?&gt;&lt;/td&gt; &lt;td&gt;&lt;?php echo $rating_value; ?&gt;&lt;/td&gt; &lt;/tr&gt; &lt;?php } } ?&gt;
&lt;/table&gt; &lt;/body&gt; &lt;/html&gt; </pre>

HASIL <a href=' https://imgur.com/a/vGIWeRh '> https://imgur.com/a/vGIWeRh </a>

avatar renaldykharisma
@renaldykharisma

4 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

maaf sepertinya kalau phpnya hanya 1 file php "saya" tidak bisa...,(yang saya tahu response-nya hasil 1 halaman php(html&phpnya) ) kalau 2 .php:

loadrecomm.php <pre> &lt;script src="loadrecomm.js"&gt;&lt;/script&gt; &lt;table border="1"&gt; &lt;tr&gt; &lt;th&gt; Places &lt;/th&gt; &lt;th&gt; Ratings &lt;/th&gt; &lt;/tr&gt; &lt;/table&gt; </pre>

getrecommdata.php <pre> &lt;?php $useript = $_POST['userinpt']; $re = new recommendationengine(); $rec = $re-&gt;getRecommendations($places, $useript); foreach($rec as $place=&gt;$rating_value){?&gt; &lt;tr&gt; &lt;td&gt;&lt;?php echo $place; ?&gt;&lt;/td&gt; &lt;td&gt;&lt;?php echo $rating_value; ?&gt;&lt;/td&gt; &lt;/tr&gt; &lt;?php } } ?&gt; </pre>

loadrecomm.js <pre> var userinpt = prompt("please enter your username to show recommendation");
if(userinpt !== null){ $.ajax({ url: 'getrecommdata.php', type: 'POST', data: {userinpt : userinpt}, success: function(response){ //do anything with the response console.log(response);//print response ke console browser $('tr').append(response);//menyisipkan tr yang diecho getrecommdata setelah &lt;tr&gt;di loadrecomm }
}); } </pre> *belum saya coba

tapi dengan kode ajax di post atas harusnya sudah ada log(ctrl+shift+i untuk membuka console browser)

jika responsenya sudah sesuai, pakai DOM javascript untuk merubah struktur HTML-nya

avatar zerokira
@zerokira

49 Kontribusi 30 Poin

Dipost 5 tahun yang lalu

Tanggapan

sudah bisa sih gan setelah ajaxnya ditambah $('tr').append(response);. table arraynya sudah terisi. tapi knp alert promptnya jadi muncul berulang2 dan tetap ada error undefined index?

dan ada peringatan Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help http://xhr.spec.whatwg.org/ ketika buka web console

kalau agan masih pakai 1 file .php, seluruh kodenya akan dipanggil lagi... Dan kalau agan coba inspect element, akan ada script prompt setelah tag

dan kalau maunya pakai 1 file php setauku pakai form(tidak pakai prompt&ajax)

Login untuk ikut Jawaban