Php 替代Ajax类型的POST-Through-GET方法不起作用

Php 替代Ajax类型的POST-Through-GET方法不起作用,php,Php,我很想在我的博客中使用这个小部件。此脚本将在我的博客内容中搜索关键字,而无需切换页面 然而,我在想,如果我用GET方法添加一个搜索特性会怎么样。例如,通过访问domain.com/page search.php?search=keyword立即获得适当的内容 我尝试将脚本中的类型:“POST”替换为类型:“GET”,但没有效果。如果我使用jQuery自动提交$(“test”).submit()它可以工作,但会切换到移动页面。所以我考虑它仍然失败。< /P> 我希望我的问题是清楚的。这是一个使用A

我很想在我的博客中使用这个小部件。此脚本将在我的博客内容中搜索关键字,而无需切换页面

然而,我在想,如果我用GET方法添加一个搜索特性会怎么样。例如,通过访问
domain.com/page search.php?search=keyword
立即获得适当的内容

我尝试将脚本中的
类型:“POST”
替换为
类型:“GET”
,但没有效果。如果我使用jQuery自动提交
$(“test”).submit()它可以工作,但会切换到移动页面。所以我考虑它仍然失败。< /P>
我希望我的问题是清楚的。这是一个使用AJAX的脚本示例

谢谢

<script type="text/javascript">
$(function() {
    $(".search_button").click(function() {
        var searchString    = $("#search_box").val();
        var data            = 'search='+ searchString;
        if(searchString) {
            $.ajax({
                type: "POST",
                url: "searchResult.php",
                data: data,
                beforeSend: function(html) {
                    $("#results").html(''); 
                    $(".mySearch").html(searchString);
               },
               success: function(html){
                    $("#results").show();
                    $("#results").append(html);
              }
            });    
        }
        return false;
    });
});
</script>

<div id="container">
<div id="box_cari">
<form id="test" method="post" action="searchResult.php">
    <input type="text" name="search" id="search_box" class='search_box'/>
    <input type="submit" value="SEARCH" class="search_button" /><br />
</form>
</div>      
<div>

<div id="results"></div>

</div>
</div>
是:

<?php
if(isset($_GET['search'])) {

    $osearch = $_GET['search'];

echo "var control = $(document).ready";
}
else {
echo "var control = $('.search_button').click";
}
?>
control(function() {
为此:

如果我使用jQuery自动提交$(“test”).submit();它可以工作,但会切换到移动页面

也许可以试试:

 $("#test").submit(function(event) {
相反:

$(".search_button").click(function() {
不幸的是,我不知道你真正想要实现什么。

为此:

如果我使用jQuery自动提交$(“test”).submit();它可以工作,但会切换到移动页面

也许可以试试:

 $("#test").submit(function(event) {
相反:

$(".search_button").click(function() {

不幸的是,我不知道您真正想要实现什么。

您最好在
php
脚本中获得
$\u GET['search']
,直接处理请求并在所提供的html中显示结果,但由于您似乎在问如何在客户端使用ajax实现这一点:

下面是一个更合适的方式来实现你的目标。请密切注意
encodeURIComponent()
位,如果您不添加该位,它将在以后咬您

$(function() {
  var search = getQueryVariable('search'); // on load, check for search var in URL
  if (search != 'not found') {
    getSearchResult(search);
  }

  $(".search_button").click(function() { // on click, check for search var in input
    var search = $("#search_box").val();
    if (search != '') getSearchResult(search);
    return false;
  });
});

function getSearchResult(searchString) {
  var $results = $("#results").html('');
  $(".mySearch").html(searchString);
  var data = 'search=' + encodeURIComponent(searchString); // make sure you encode this, otherwise characters like & will muck up the querystring!
  $.ajax({
    type: "POST",
    url: "searchResult.php",
    data: data,
    success: function(html) {
      $results.html(html).show();
    }
  });
}

function getQueryVariable(variable) { // function to retreive GET var from URL
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return decodeURIComponent(pair[1]);
    }
  }
  return 'not found';
}
$(函数(){
var search=getQueryVariable('search');//加载时,检查URL中的搜索变量
如果(搜索!=“未找到”){
getSearchResult(搜索);
}
$(“.search_按钮”)。单击(函数(){//单击后,检查输入中的搜索变量
var search=$(“#搜索框”).val();
如果(搜索!='')获取搜索结果(搜索);
返回false;
});
});
函数getSearchResult(searchString){
var$results=$(“#results”).html(“”);
$(“.mySearch”).html(搜索字符串);
var data='search='+encodeURIComponent(searchString);//确保对其进行编码,否则像&这样的字符将破坏查询字符串!
$.ajax({
类型:“POST”,
url:“searchResult.php”,
数据:数据,
成功:函数(html){
$results.html(html.show();
}
});
}
函数getQueryVariable(variable){//用于从URL检索GET var的函数
var query=window.location.search.substring(1);
var vars=query.split(&);
对于(变量i=0;i
您最好在
php
脚本中获得
$\u GET['search']
,直接处理请求并在提供的html中显示结果,但由于您似乎在问如何在客户端使用ajax:

下面是一个更合适的方式来实现你的目标。请密切注意
encodeURIComponent()
位,如果您不添加该位,它将在以后咬您

$(function() {
  var search = getQueryVariable('search'); // on load, check for search var in URL
  if (search != 'not found') {
    getSearchResult(search);
  }

  $(".search_button").click(function() { // on click, check for search var in input
    var search = $("#search_box").val();
    if (search != '') getSearchResult(search);
    return false;
  });
});

function getSearchResult(searchString) {
  var $results = $("#results").html('');
  $(".mySearch").html(searchString);
  var data = 'search=' + encodeURIComponent(searchString); // make sure you encode this, otherwise characters like & will muck up the querystring!
  $.ajax({
    type: "POST",
    url: "searchResult.php",
    data: data,
    success: function(html) {
      $results.html(html).show();
    }
  });
}

function getQueryVariable(variable) { // function to retreive GET var from URL
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return decodeURIComponent(pair[1]);
    }
  }
  return 'not found';
}
$(函数(){
var search=getQueryVariable('search');//加载时,检查URL中的搜索变量
如果(搜索!=“未找到”){
getSearchResult(搜索);
}
$(“.search_按钮”)。单击(函数(){//单击后,检查输入中的搜索变量
var search=$(“#搜索框”).val();
如果(搜索!='')获取搜索结果(搜索);
返回false;
});
});
函数getSearchResult(searchString){
var$results=$(“#results”).html(“”);
$(“.mySearch”).html(搜索字符串);
var data='search='+encodeURIComponent(searchString);//确保对其进行编码,否则像&这样的字符将破坏查询字符串!
$.ajax({
类型:“POST”,
url:“searchResult.php”,
数据:数据,
成功:函数(html){
$results.html(html.show();
}
});
}
函数getQueryVariable(variable){//用于从URL检索GET var的函数
var query=window.location.search.substring(1);
var vars=query.split(&);
对于(变量i=0;i
谢谢,但是如果使用
$(“.search_按钮”)。单击(函数(){
我希望访问
britha.com/iklan/cari.php?search=KEYWORD
生成数据。
.submit()
将提交表单并重新加载页面……这正是OP所说的他们不想要的……甚至在你引用的评论中也有,但如果使用
$(“.search_按钮”)。单击(函数(){
我希望访问
britha.com/iklan/cari.php?search=关键字
生成数据。
.submit()
将提交表单并重新加载页面……这正是OP所说的他们不想要的……甚至在你引用的评论中也是如此。这与我的预期相符。太好了。谢谢@bleeteddodthanks。你的代码对我来说是正确的。但是如果可以解决这些问题,结果就不会有什么问题。如果我双击submit,那么值将加倍。这可以克服什么?示例屏幕截图:@Norax see update,将
$results.append(html.show();
更改为
$results.html(html.show();
是的,这更好。谢谢:)我需要你的帮助来修复我的一些代码。但我不知道如何与你联系。请写一些东西以便我可以联系。如果这令人不安,很抱歉,但我认为你是请求救济的合适人选。谢谢:)这与我的预期相符。完美。谢谢@bleeteddodthanks。您的代码对我来说是正确的。但如果可以解决这些问题,结果就不会有什么问题。如果我单击“提交两倍”,则值将加倍。这能克服什么问题?示例屏幕