2014-10-08 48 views
1

我所试图做的传递变量 - )> AJAX负载(

我有一个HTML表单,它看起来像这样: [输入文本字段] [提交按钮。 我希望输出结果只显示在页面的一小部分(不想在单击按钮后刷新整个页面)。

我做了什么至今

我使用jQuery的load()方法如下:

<script type="text/javascript"> 
function searchresults(id) { 
$('#myStyle').load('displaysearchresults.php?id=' + id ; ?>); 
} 
</script> 

结果会显示在一个div这正是我想要的:

<div id='myStyle'></div> 

问题

上面的脚本工作得很好(我在其他地方使用了它的变体)。但我有两个问题:

1-如何从窗体调用load()脚本。我试过,但它不工作:

<form id="form" name="form" method="post" action="searchresults('1')"> 

2,如果我不能够从表单调用load()脚本,我怎么传的是在输入文本字段中的负载( )脚本,最后它可以通过displaysearchresults.php文件进行处理。

感谢

回答

2

目前它不工作,因为你有一个错字:

function searchresult(id) { 
        /^ no s 
    $('#myStyle').load('displaysearchresults.php?id=' + id ; ?>); 
} 

这里:

action="searchresults('1')"> // this should be on the onsubmit 
        ^

既然你的目的是要提交表单无需重新加载,你可以做类似:

$('#form').on('submit', function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     url: 'displaysearchresults.php', 
     data: {id: 1}, 
     type: 'POST', 
     success: function(response) { 
      $('#myStyle').html(response); // assuming the markup html is already done in PHP 
     } 
    }); 
}); 

当然在PHP的一面,只是把它像一个正常的POST变量:

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $id = $_POST['id']; 
    // other stuff you have to do 
    // echo markup stuff 
    exit; 
} 
+0

嗨鬼,非常感谢。我正在尝试实施您建议的代码。只是为了正确地做到这一点:(1)脚本的第一部分必须位于标记之间的标题部分,对吧? (2)displaysearchresults.php的输出会出现在

and
标签的同一页上,对吧? (3)你在php中的标记是什么意思?再次感谢。 – Guillaume 2014-10-08 08:26:10

+0

@Guillaume我的意思是通过html标记,PHP会创建html标签,例如:'mysqli_fetch_blah_blah(echo'​​resulthere';)'。所以这意味着你的PHP返回一个标记,因为有些也不这样做。相反,他们发送一个json。 – Ghost 2014-10-08 08:31:48

+0

@Guillaume 1)是的,你可以把它放在头标签里面。 2)PHP也可以在这个相同的PHP文件或单独的一个,但那不是很好,分开的PHP而不是。 3)上面的解释 – Ghost 2014-10-08 08:33:14

0

好,我已经能够做我想做的事,即在页面的一部分显示搜索结果,而无需重新加载。

其实没有必要使用ajax load()函数。

<form id="form" method="POST"> 
<input type="text" id="textbox" name="textbox" /> 
<input type="submit" name="test" /> 
</form> 
<div id="myStyle"></div> 
<p> 
<script src="jquery-1.10.2.min.js"> 
</script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$('#form').on('submit', function(e){ 
e.preventDefault(); // prevent the form from reloading 
$.ajax({ 
url: 'displaysearchresults.php', 
type: 'POST', 
dataType: 'html', 
data: {text:$('#textbox').val()}, 
success: function(response) { 
$('#myStyle').html(response); 
} 
}); 
}); 
}); 
</script> 

那么,什么是该做的:你可以用下面的脚本做

它会“读”是什么用户在文本框中输入,

当用户点击“提交“按钮,它会把它放到一个POST变量中,并将它发送到”displaysearchresults.php“而不用重新加载页面,

搜索结果将显示在”mystyle“div之间。

很不错。

请注意:不要忘记将jquery文件复制到根文件夹,否则ajax就无法工作。