2017-09-23 68 views
0

这是我试图完成的流程:AJAX后到PHP文件未返回数据在成功

形式完成 - 发送到PHP文件中的数据>数据 - > PHP文件中获取数据,查询API - > PHP然后将文件返回到原始页面的查询结果作为echo

这个往返时间应该在10秒左右。这里是我的表格,AJAXPHP文件。

<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需要与表单显示在同一页面上,但没有任何回应。为什么会这样?

+0

'header('Content-Type:application/json');'需要在输出之前 – KDOT

+0

你能演示一下吗?此外,我刚刚确定表单中的值不是通过ajax提交,或者b)未在php文件中收到。 – Ethan

+0

您需要'json_encode()'javascript的输出来理解它并将其作为内容类型'application/json'返回 - [请参阅此示例](https://3v4l.org/N6leg) – KDOT

回答

0

尝试以“字符串”格式发布数据,例如,

var query = $("#query_input").val(); //获取输入

var queryString = 'query='+ query;,然后在$就调用与使用它的值:data: queryString,

回升的与$ _ POST [“查询”]值