ส่งอาร์เรย์ Javascript ไปยัง PHP โดยใช้ Ajax (ไม่สามารถสะท้อนอาร์เรย์จาก PHP ได้)

Sep 10 2020

ฉันมีรูปแบบที่มีปุ่มธรรมดาอยู่ในนั้น เมื่อคลิกที่ปุ่มฟังก์ชันdelete_data()จะถูกเรียกใช้ ฟังก์ชันนี้เติมเต็มอาร์เรย์ด้วยข้อมูล ฉันต้องการส่งอาร์เรย์นี้ไปยัง PHP ด้วย Ajax

ปัญหา : เมื่อใช้event.preventDefault();ตามที่คุณเห็นในโค้ด JavaScript ของฉันข้อความแจ้งเตือนความสำเร็จจะปรากฏขึ้น ("ตกลง") แต่ฉันไม่ได้รับเสียงสะท้อนจากสคริปต์ php ของฉัน

คุณช่วยแก้ไขรหัสของฉันหรือบอกฉันว่ามีอะไรผิดปกติ ขอบคุณมาก!

รหัส HTML

<form id="form" method="POST"> 
      <button type="button"id="delete" onclick="delete_data();" name="delete"><i class="fa fa-remove" aria-hidden="true"></i> Delete Zone(s)</button>
</form>

รหัส JavaScript

function delete_data(){
        
        event.preventDefault();
        
        var checkedIds = $(".chk:checked").map(function() { return this.id; }).toArray(); var Arr = JSON.stringify(checkedIds); $.ajax({
            type: "POST",
            url: "./delete_measurement.php",
            data: {arr: Arr}, 
            cache: false,
            
            success: function(){
                alert("OK");
            }

        });

รหัส PHP

<?php
include_once("./conn.php");
    
if(isset($_POST['arr'])){ $arr = json_decode($_POST['arr']); echo $arr; //can't echo
    
}else{ 
    echo "Failed";
    
}
?>

คำตอบ

1 Wimanicesir Sep 10 2020 at 18:22

เป็นตรรกะที่คุณไม่เห็นเสียงสะท้อน เพิ่มพารามิเตอร์ให้กับฟังก์ชันความสำเร็จดังนี้:

    $.ajax({
        type: "POST",
        url: "./delete_measurement.php",
        data: {arr: Arr}, 
        cache: false,
        
        success: function(data){
            // This will show what you echo in PHP (in the console)
            console.log(data)
            alert("OK");
        }

    });