Score:0

การโทรกลับ AJAX ไม่ทำงานใน hook_form_alter()

ธง br

ใน Drupal 7 ลูกค้าต้องการเพิ่มปุ่มให้กับ user_profile_form ดังนั้นในโมดูลที่กำหนดเองของฉัน ฉันจึงสร้างปุ่มและการโทรกลับร่วม แต่ในขณะที่ปุ่มปรากฏบนแบบฟอร์ม ฉันไม่เห็นหลักฐานว่ามีการยกเลิกการโทรกลับ

ฟังก์ชัน member_form_alter(&$form, &$form_state, $form_id) {
  ถ้า ($form_id == "user_profile_form") {
     
  $form['send_reset'] = อาร์เรย์(
          '#type' => 'ปุ่ม',
          '#คำนำหน้า' => "<div id='reset-div'>",
          '#suffix' => "</div>",
          '#value' => "รีเซ็ตสมาชิก",
          '#อาแจ็กซ์' => [
            'callback' => 'member_reset_user',
            'wrapper' => 'รีเซ็ต-div',
            'เหตุการณ์' => 'ส่ง', //คลิก ฯลฯ
          ]
          '#น้ำหนัก' => -150,
          '#attributes' => อาร์เรย์(
            'id' => array('รีเซ็ต-ยกเลิก')
          ),
        );
}
ฟังก์ชัน member_reset_user($form, &$form_state) {
  ตาย();  
  พยายาม {
    my_user_function():
    สุนัขเฝ้าบ้าน ('สมาชิก', 'รีเซ็ตผู้ใช้', WATCHDOG_NOTICE);
  }
  catch (ยกเว้น $e) {
    สุนัขเฝ้าบ้าน ('สมาชิก', 'รีเซ็ตล้มเหลว', WATCHDOG_ERROR);
  }
  คืนฟอร์ม $;
}

html ที่สร้างโดย Drupal แนะนำฟังก์ชันส่ง

  <div id="reset-div"><input id="reset-cancel" type="submit" name="op" value="Reset member" class="form-submit"></div>

เนื่องจากฉันไม่ได้สร้างองค์ประกอบฟอร์มใหม่ในการโทรกลับ เพียงแค่ออกฟังก์ชันที่กำหนดเอง ฉันจึงมองไม่เห็นว่าฉันทำอะไรผิด ฉันดูเรื่องนี้มานานเกินไปแล้ว

apaderno avatar
us flag
ฉันใช้การโทรกลับ AJAX ไม่ได้ถูกเรียกใช้ตามที่คุณคาดไว้ คุณทำอะไรเพื่อให้แน่ใจว่ามีการเรียกใช้การโทรกลับ
apaderno avatar
us flag
(มีการพิมพ์ผิดในรหัสนั้น และบล็อกของรหัสไม่ใช่ตำแหน่งที่ควรจะเป็น ซึ่งไม่ใช่สาเหตุที่ทำให้การโทรกลับไม่ถูกเรียกใช้ แต่รหัสที่แสดงไม่ใช่สิ่งที่คุณใช้จริง อาจจะ.)
apaderno avatar
us flag
เพื่อให้ชัดเจน เนื่องจากไม่ได้ตั้งค่าเหตุการณ์ AJAX สำหรับปุ่มนั้น เหตุการณ์เริ่มต้นคือ *mousedown* การโทรกลับ AJAX จะถูกเรียกใช้ในเหตุการณ์ JavaScript นั้นเท่านั้น
br flag
@apaderno ขอบคุณสำหรับการตอบกลับ บรรทัดแรกของการโทรกลับมี die() เพื่อความแน่ใจ แก้ไขข้อผิดพลาดด้านบน เหตุการณ์ AJAX ทำให้ฉันตกใจในตอนแรก แต่ฉันตรวจสอบและเพิ่มเหตุการณ์สำหรับการคลิก ส่ง ยังไม่ทริกเกอร์

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา