0

我一直在用头撞电脑,试图弄清楚这一点。我的 AJAX 调用/请求在 Chrome 中返回正确的对象,但在 Firefox/IE8 中返回 null。我尝试将我的函数剥离为一个具有一个值/键对的简单数组,但我仍然收到相同的结果。非常感谢任何建议!

简化的 PHP 函数:

add_action('wp_ajax_get_ldap', 'get_ldap_attr');
add_action('wp_ajax_nopriv_get_ldap', 'get_ldap_attr');

function get_ldap_attr() {
  header("Content-Type: application/json", true);
  echo json_encode( array("happy" => "coding") );
  die();
}

jQuery:

jQuery(function() {
  jQuery('#empLanId').on('blur', function () {
     var lan = jQuery('#empLanId').val();
     var data = { action:"get_ldap", lan:lan };
     var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>';
       jQuery.ajax({
          url: ajaxurl,
          type: "POST",
          data: data,
          dataType: "json",
          success: function(response) {     
            console.log(response);
          }
      });
  });

}
4

1 回答 1

1

您必须使用 JSON 响应发送正确的内容类型。

// Send as JSON
header("Content-Type: application/json", true);

您更新后的函数应如下所示:

function get_ldap_attr() {
    header("Content-Type: application/json", true);
    echo json_encode( array("happy" => "coding") );
    die();
}

在这里查看我之前的答案:

dataType json 的 jQuery $.ajax 请求不会从 PHP 脚本中检索数据

于 2013-07-30T18:37:27.657 回答