【发布时间】:2018-03-04 16:08:23
【问题描述】:
当我提交表单时,我的信息被传递到一个 PHP 函数中,该函数查询外部数据库并返回一组结果。表单完成后,我运行以下函数:
<script>
function transitions(){
$("#form_holder").fadeToggle();
$("#Analyzing").fadeToggle();
}
</script>
这会隐藏表单并显示另一个表示查询已提交并将很快返回的 div。当它返回时,分析 div 应该隐藏,结果 div 应该出现。但是,当函数确实返回值时,页面似乎会刷新。结果,我留下了所有可见的东西,而不仅仅是结果 div。
我的最佳猜测是,这是由于表单实际已完成,因此 PHP 页面刷新,这将导致问题。
我已经研究过阻止 php 页面在通过 AJAX 提交时刷新的方法,但这种潜在的解决方案对我来说是无效的。
有什么想法吗?
更多代码
<form id="query_form" name="query_form" method="POST" onsubmit="transitions()">
<input type="text" id="query_input" name="query_input" required><br>
<input type="number" min="0" step="1" name="profit_input" id="profit_input" required><br>
<input id="send_btn" type="submit" name="send_query" value="Submit Request">
</form>
<script>
$("#query_form").ajaxForm({url: 'run.php', type: 'post',data: {query: '#query_input'},success: function(output) {
alert(output);
}});
</script>
run.php中需要带参数调用的函数称为QueryData($term)
Run.php
<?php
require('RestClient.php');
$term = $_POST['qi'];
$profit = $_POST['pi'];
try {
$client = new RestClient('https://api.dataforseo.com/', null, '#########', '###########');
$post_array[] = array(
"language" => "en",
"key" => $test
);
$sv_post_result = $client->post('v2/kwrd_sv', array('data' => $post_array));
$search_volume = $sv_post_result["results"][0]['sv'];
echo "
<div id='results_div'>
<table id='results_table'>
<tr class='results_table_row'>
<td id='SEO_Search_Volume_Cell'>
$search_volume <span>Approximate Number Of Searches Per Month</span>
</td>
</tr>
</table>
";
} catch (RestClientException $e) {
echo "\n";
print "HTTP code: {$e->getHttpCode()}\n";
print "Error code: {$e->getCode()}\n";
print "Message: {$e->getMessage()}\n";
print $e->getTraceAsString();
echo "\n";
echo "An Error Has Occured, Please Try Again Later";
exit();
}
$client = null;
}
?>
【问题讨论】:
-
您能介绍一下您的 AJAX 代码吗?
-
@shanechiu 请检查上面的新信息。
-
尝试从您的表单标签中删除
method="post"。 -
@GoogleMac 没有骰子。
-
尝试使用
type="button"代替submit然后在onClick事件中处理onSubmit。
标签: javascript php jquery html