2017-09-27 77 views
-1

需要一些帮助,我有一个jQuery的ajax功能,并希望在PHP中做到这一点。如何在PHP中执行ajax?

var accessToken = '237d48b642d5443495a9ec62811c97d7'; 
     $.ajax({ 
     type: 'POST', 
     url: 'https://api.api.ai/api/query?v=20150910', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     headers: {'Authorization': 'Bearer' + accessToken}, 
     data: JSON.stringify({query: 'hello u, sessionId: '1'}), 
     success: function(data){ 
      setResponse(data.result.fulfillment.speech); 
     } 
     }); 

我愿做上述AJAX到PHP和我试图

$accessToken = '237d48b642d5443495a9ec62811c97d7'; 
$url = 'https://api.api.ai/api/query?v=20150910'; 
$data = ['query'=>'stupid', 'sessionId'=>'123']; 
$options = array(
    'http' => array(
    'method' => 'POST', 
    'content' => json_encode($data), 
    'header'=> ["Authorization" => "Bearer" . $accessToken "\r\n"] . 
       "Content-Type: application/json\r\n" 
    ) 
); 

$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 
$response = json_decode($result); 

但我m到处错误,不知道该怎么做。需要一些帮助。

+0

发表您的错误回溯。 – aircraft

+0

在您的js – rtfm

+1

数据中存在语法错误:JSON.stringify({query:'hello u,sessionId:'1'}),''正确关闭引号 – Ramanlfc

回答

1

JS

var accessToken = '237d48b642d5443495a9ec62811c97d7'; 
$.ajax({ 
    type: 'POST', 
    url: 'https://api.api.ai/api/query?v=20150910', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    headers: {'Authorization': 'Bearer' + accessToken}, 
    data: JSON.stringify({query: 'hello u', sessionId: '1'}), 
    success: function(data){ 
    setResponse(data.result.fulfillment.speech); 
    } 
}); 

PHP

$accessToken = '237d48b642d5443495a9ec62811c97d7'; 
$url = 'https://api.api.ai/api/query?v=20150910'; 
$data = array('query'=>"hello u", 'sessionId'=>1,'lang'=>'en'); 
$options = array(
    'http' => array(
    'method' => 'POST', 
    'content' => json_encode($data), 
    'header'=>"Authorization: Bearer " . $accessToken. "\r\n" . 
       "Content-Type: application/json\r\n" 
    ) 
); 

$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 
$response = json_decode($result); 
+0

修复了代码中的一些错误,让我知道它是否有效。 – dontanios

+0

我得到这个错误是什么意思 警告:file_get_contents(https://api.api.ai/api/query?v=20150910):无法打开流:HTTP请求失败! HTTP/1.0 401未经授权在/Applications/XAMPP/xamppfiles/htdocs/test1/index.php 15行 –

+0

我得到错误兄弟。 –

-1

尝试切换到PHP卷曲:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,'https://api.api.ai/api/query?v=20150910'); 
curl_setopt($ch, CURLOPT_POST, 1); 

$data = array('query'=>'stupid', 'sessionId'=>'123'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
      http_build_query($data)); 

$accessToken = '237d48b642d5443495a9ec62811c97d7'; 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Authorization: Bearer'.$accessToken, 
      'Content-Type: application/json' 
      ));   

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$server_output = curl_exec($ch); 

$response = json_decode($server_output); 

curl_close ($ch); 
+0

即时通讯此错误stdClass对象([id] => 2bb036be-05e0-49c2-953b-dcd5200d2326 [timestamp] => 2017-09-27T03:27:21.119Z [lang] => en [status] => stdClass Object ([code] => 400 [errorType] => bad_request [errorDetails] =>无法解析json,请验证您的json。)) –