1

我为这两种请求准备了名为“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()");
  }
});

哪种方式更快?

除了请求和返回的速度,我想知道哪种方式对应用程序的安全性更好?!

4

2 回答 2

5

两种方式几乎完全相同。

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

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

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

于 2011-09-28T18:45:14.600 回答
0

我不知道具体细节,但我认为安全性没有区别。load() 和 get() 是 ajax() 的“优化”版本,所以它们总是会更快更好,但我不知道,或者你的访问者会感受到像你这样的查询的不同

于 2011-09-28T18:49:26.133 回答