Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
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>
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>
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: 'loadrecomm.php',
type: 'POST',
dataType: 'text',
data: {userinpt : userinpt},
success: function(response){
//do anything with the response
console.log(response);
}
});
}
</pre>
loadrecomm.php
<pre> <html>
<body>
<script src="loadrecomm.js"></script>
<table border="1"> <tr> <th> Places </th> <th> Ratings </th> </tr> <?php if (isset($_POST['userinpt'])){
$useript = $_POST['userinpt'];
$re = new recommendationengine(); $rec = $re->getRecommendations($places, $useript);
foreach($rec as $place=>$rating_value){?>
<tr>
<td><?php echo $place; ?></td>
<td><?php echo $rating_value; ?></td>
</tr>
<?php } } ?>
</table>
</body>
</html>
</pre>
HASIL <a href=' https://imgur.com/a/vGIWeRh '> https://imgur.com/a/vGIWeRh </a>
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> <script src="loadrecomm.js"></script> <table border="1"> <tr> <th> Places </th> <th> Ratings </th> </tr> </table> </pre>
getrecommdata.php <pre> <?php $useript = $_POST['userinpt']; $re = new recommendationengine(); $rec = $re->getRecommendations($places, $useript); foreach($rec as $place=>$rating_value){?> <tr> <td><?php echo $place; ?></td> <td><?php echo $rating_value; ?></td> </tr> <?php } } ?> </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 <tr>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
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 <tr>
dan kalau maunya pakai 1 file php setauku pakai form(tidak pakai prompt&ajax)