从PHP文件加载HTML时,更快的jQuery.load或jQuery.ajax()是什么?

时间:2011-09-28 18:43:04

标签: ajax performance jquery jquery-load

我为这两种请求准备了名为“content.php”的PHP文件,仅作为示例:

<?php
  // Id params passed via GET method
  $get = $_GET['param'];
  switch ($get) {
    case "param_value":
?>
  <div data-param="<?php echo $get; ?>">
    // My HTML content here
  </div>
<?php
      break;
    case default:
      break;
  }

  // Id params passed via POST method
  $post = $_POST['param'];
  if ($post != "") {
    $data['output'] = '
      <div data-param="<?php echo $get; ?>">
        // My HTML content here
      </div>
    ';
    echo json_encode($data);
  }
?>

而且我有Javascript文件,我正在从中对PHP进行AJAX调用:

var oWrapper = jQuery("#wrapper"),

// Loading HTML via jQuery.load() function
    sParams = jQuery.param({ param: "value" });
oWrapper.load("/content.php?" + sParams, function () {
  console.log("content loaded via load()");
});

// Loading HTML via jQuery.ajax() function
jQuery.ajax({
  type: "POST",
  dataType: "json",
  url: "/content.php",
  cache: false,
  data: { "param": "value" },
  success: function (data) {
    oWrapper.html(data.output);
    console.log("content loaded via ajax()");
  }
});

哪种方式更快?

除了请求和退货的速度之外,我想知道哪种方式更适合应用的安全

2 个答案:

答案 0 :(得分:5)

两种方式完全相同。

在内部,$(selector).load()使用$.ajax()获取数据,然后$(selector).html()将所选元素的html设置为$.ajax()调用的响应。

如果要将html加载到元素中,请使用$(selector).load(),因为它更具可读性。一个是和另一个一样安全和快速。

注意:内部jQuery现在使用$.parseHTML()而不是$(selector).html()将字符串转换为html。但这并没有真正改变任何事情。

答案 1 :(得分:0)

我不知道具体细节,但我不认为安全性存在差异。 load()和get()是ajax()的“优化”版本,所以它们总是会更快更好但我不是你或者你的访问者会觉得像你这样的查询有什么不同