发布到PHP,不要重新加载页面并更新div
编辑:这现在有效,代码更新。 非常感谢Martin Amps!
所以我已经玩了一个星期了,并且已经将很多例子共同攻击但是它没有用,所以我不打扰发布代码因为它是一团糟! 我是所有行业的杰克,无人掌握,所以我不确定我哪里出错了。
这就是我需要的。
posttest.php
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
FILLER
$('#processForm').submit(function() { var text = $('#textField').val(); var sid = $('#sessionID').val(); $.ajax({ url: "process.php", type: "POST", data: { 'text' : text, 'sessionID' : sid }, success: function(data) { var result = $.parseJSON(data); if (result.success) { // Handle your result and update your form accordingly // result.data.someKey $('#mydiv').text('Success! With ' + result.data); } else { // Error handling as applicable } } }); return false; });
process.php
false, 'data' => $someText ); if (isset($_POST['text'], $_POST['sessionID'])) { // Do your queries $return['success'] = true; //$return['data'] = array('someKey' => 'someValue'); $return['data'] = $someText; } echo json_encode($return); ?>
我已经尝试了很多这样的例子,并尝试从头开始制作我自己的例子,似乎无法让它工作! 我想要完成的一个例子就像你在Facebook上添加评论或新post一样。
我希望有人可以帮忙,因为我觉得我已经在这个简单的任务上浪费了一周时间。
提前致谢!
您不需要在页面中存储会话变量,因为它已经存储在cookie中。 假设您正在使用JQuery,这里有一个快速示例:
标记
Javascript
$('#processForm').submit(function() { var text = $('#textField').val(); var sid = $('#sessionID').val(); $.ajax({ url: "process.php", type: "POST", data: { 'text' : text, 'sessionID' : sid }, success: function(data) { var result = $.parseJSON(data); if (result.success) { // Handle your result and update your form accordingly // result.data.someKey } else { // Error handling as applicable } } }); return false; });
process.php
false, 'data' => array() ); if (isset($_POST['text'], $_POST['sessionID'])) { // Do your queries $return['success'] = true; $return['data'] = array('someKey' => 'someValue'); } echo json_encode($return); ?>
注意
你应该使用绝对url并注意表单/ javascript是非突兀的,所以你应该让它在没有ajax的情况下运行。
您可以只使用一般的AJAX请求,然后更改响应中的div吗?
这当然是使用JQuery。
$.ajax({ type: "POST", url: "/process.php", data: "yourData=AwesomeData&SomeOtherData=5", success: function(data){ //Update the div }, error: function(request){ //Something went wrong. }, });
我假设您只想通过ajax从process.php加载一些数据。 您可以使用jquery中的load()
方法。 http://api.jquery.com/load/
在index.php文件中:
$('#container').load('process.php', {'variable1' : var1, 'variable2' : var2});
上面的代码用于使用POST
请求通过ajax提交数据。 所以你必须使用$_POST['variable1']
在process.php文件中访问它们然后只是执行你的查询,我假设你已经如何做到这一点,所以我没有提供一个例子。 如果是多行结果,则需要将结果存储在数组中:
$store = array(); foreach($result as $row){ $store[] = array('field1'=>$row['field_name']); }
最后使用json_encode
使数组更容易在javascript中处理:
echo json_encode($store);
如果您需要更多帮助,请随时发表评论。
以下是收集用户数据的Web表单示例:
这是jQuery:
$('form button.submit').click(function() { $.ajax({ 'data' : $('form').serialize(), 'type' : 'POST', 'url' : 'process.php', 'success' : function(data) { $('div.container').html('' + data + '
'); } }); });
这是PHP:
希望有所帮助!