0
这是我试图完成的流程:AJAX后到PHP文件未返回数据在成功
形式完成 - 发送到PHP文件中的数据>数据 - > PHP文件中获取数据,查询API - > PHP然后将文件返回到原始页面的查询结果作为echo
。
这个往返时间应该在10秒左右。这里是我的表格,AJAX
和PHP
文件。
表
<form id="query_form">
<input type="text" id="query_input" name="query_input" required>
<button id="send_btn" type="submit" name="send_query" value="Submit Request">
</form>
AJAX
<script type="text/javascript">
$(document).on("click", "button[id='send_btn']", function(e){
e.preventDefault(); // Prevents any default actions by clicking submit in a form.
var query = $("#query_input").val(); // Gets the value of an input
$.ajax({
type: "POST",
url: "run.php",
data: {query:query},
success: function(r){ alert(r); }
});
});
</script>
PHP
<?php
require('RestClient.php');
$term = "";
if(isset($_POST['query'])){
$term = $_POST['query']
try {
$client = new RestClient('https://api.dataforseo.com/', null, '#########', '###########');
$post_array = array("language" => "en","key" => $term); // This is the term to search, correct?
$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>
</div>";
} 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();
}
}
?>
显然数据echo
'd back需要与表单显示在同一页面上,但没有任何回应。为什么会这样?
'header('Content-Type:application/json');'需要在输出之前 – KDOT
你能演示一下吗?此外,我刚刚确定表单中的值不是通过ajax提交,或者b)未在php文件中收到。 – Ethan
您需要'json_encode()'javascript的输出来理解它并将其作为内容类型'application/json'返回 - [请参阅此示例](https://3v4l.org/N6leg) – KDOT