我可以在没有java脚本的情况下只加载页面的一部分吗


Can I load just a portion of a page without java script?

我使用PHP作为服务器端语言,并且有一个返回结果的表单。我目前正在使用jquery来检索结果并更新页面的一部分。没有jquery可以做到这一点吗?如果是的话,有什么好的例子吗?

我当前的jquery代码如下:

$.post("search_basic_results.php", $("#profile_form_id").serialize(),
    function(data) {    
        $('#search_results').html(data);
    });
});

我正试图找到一个无java脚本的替代方案,但我担心我需要再次重新加载整个页面。

没有jquery可以做到这一点吗?

是的。jQuery只是一个库。它提供了一些辅助函数,可以用更少的代码完成任务,并消除浏览器之间的差异。

还有其他库可供选择(我喜欢YUI3),jQuery的源代码是可用的,所以如果你想的话,你可以看到它在幕后做什么

我正在努力寻找一个无JavaScript的替代

如果没有客户端编程,就无法在浏览器中编辑文档。JavaScript是唯一被广泛支持的用于操作浏览器DOM的语言。

不过你可以使用iframe。

没有Javascript是不可能的。

这是老式的Javascript代码。

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","search_basic_results.php",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

没有jquery可以做到这一点吗?

当然,您可以使用普通的旧javascript AJAX。你必须写一些代码。但是,当你有一个使用jQuery的跨浏览器工作替代方案时,你为什么要这样做呢?

就在没有javascript的情况下操作DOM而言,如果不重新加载整个页面,就无法做到这一点。

重新加载页面有什么问题?

if (count($_POST) == 0)
{
  // var initialisation
  $input_one = ''; 
  $input_two = '';
  // result wont be displaied
  $display_search = false;
}
else
{
  // this bit keeps track of the input fields
  $input_one = $_POST['input_one'];
  $input_two = $_POST['input_two'];
  // result will be displayed
  $display_search = true;
  // do some stuff that search_basic_results.php would do
}
?>
<form action="" method="post">
  <input name="input_one" type="text" value="<?=$input_one?>"/>
  <input name="input_two" type="text" value="<?=$input_two?>"/>
</form>
<? if ($display search == true): ?>
<!-- display stuff you want to display here /  $('#search_results').html(data); equivalent -->
<? endif ?>