Javascript 如何在PHP中实现ajax?

Javascript 如何在PHP中实现ajax?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我需要一些帮助,我有一个jqueryajax函数,我想用PHP来实现它 var accessToken = '237d48b642d5443495a9ec62811c97d7'; $.ajax({ type: 'POST', url: 'https://api.api.ai/api/query?v=20150910', contentType: 'application/json; charset=utf-8', da

我需要一些帮助,我有一个jqueryajax函数,我想用PHP来实现它

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 );
但我遇到了一个错误,不知道如何解决它


请提供帮助。

尝试切换到PHP CURL:

$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);
JS

PHP


发布错误回溯。JSON中有一个语法错误:JSON.stringify{query:'hello u,sessionId:'1',关闭引号properlyTry php cURL以实现此目的语法突出显示编辑器非常适合发现错误,停止使用记事本。我收到此错误stdClass对象[id]=>2bb036be-05e0-49c2-953b-dcd5200d2326[时间戳]=>2017-09-27T03:27:21.119Z[lang]=>en[status]=>stdClass Object[code]=>400[errorType]=>bad_请求[errorDetails]=>无法解析json。请验证您的json。修复了代码中的一些错误,请告诉我它是否有效。我收到了此错误的含义警告:文件\u获取\u内容:无法打开流:HTTP请求失败!第15行的HTTP/1.0 401 Unauthorized in/Applications/XAMPP/xamppfiles/htdocs/test1/index.php修复了它,授权丢失了。它起作用了。非常感谢你的帮助。非常感谢这个问题,当你有机会的时候,请选择正确的答案。谢谢
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);
  }
});
$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 );