PHP Symfony API和jQuery Ajax请求

南瓜种子

我在服务器端和客户端之间有问题。我在服务器端使用PHP Symfony拥有Rest API。服务器端:

/**
* @Route("/advertisement/all", name="advertisement_get_all")
* @Method("POST")
*/
public function getAllAdvertisement()
{
  header('Content-Type: application/json');
  if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
    $content = $this->get("request")->getContent();
    $advertisemenetService = $this->container->get("advertisementservices");
    $response = $advertisemenetService->getAllAdvertisement($content);
  } else {
    $response = new \stdClass();
    $response->error = true;
    $response->message = "Error occurred: You aren't authorized!";
  }

  return new JsonResponse($response);
}

如果我在DHC Rest Client Chrome扩展程序中尝试development.domain.com/index.php/api/v2/advertisement/all使用内容类型进行该操作application/x-www-form-urlencoded我得到了正确的JSON对象。如果我application/json对symfony尝试相同的操作,请为我说以下错误:Failed to start the session because headers have already been sent by "" at line 0. (500 Internal Server Error) JSON响应示例

客户端:

我在API测试器上怎么说,我有一个正确的JSON对象。我的客户端代码:

function sendAjaxRequest(method, url, data, contentType) {
    var response;
    $.ajax({
        method: method,
        url: url,
        data: data,
        dataType: 'json',
        contentType: contentType,
        success: function(msg) {
            response = msg;
        }
    });
    return jQuery.parseJSON(response);
}
response = sendAjaxRequest("POST", "{{ path('advertisement_get_all') }}", '', 'application/x-www-form-urlencoded');
document.getElementById("loader-container").innerHTML = response;

在这种情况下,我总是undefined站在客户端上。我尝试在响应上使用JSON.stringify,因为它是JSON对象。

南瓜种子

我扔掉了jQuery Ajax,因为它很难解决这个问题,然后回到XMLHttpRequest并使用了我在AJAX得到响应时调用的回调函数。

function sendAjaxRequest(method, url, data, contentType, callback)
{
    var response
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            response = xhttp.responseText;
            callback(JSON.parse(response));
        }
    };
    xhttp.open(method, url, true);
    xhttp.setRequestHeader("Content-Type", contentType);
    xhttp.send(data);

    return response;
}

出现的主要问题是:响应处理程序功能总是比Ajax响应到达早运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Symfony和Jquery进行POST Ajax请求

来自分类Dev

jQuery / PHP Foreach Ajax请求

来自分类Dev

如何使用PHP和jQuery发送安全的AJAX请求

来自分类Dev

从jQuery / AJAX请求执行PHP文件

来自分类Dev

POST请求与AJAX / JQuery中的PHP等效

来自分类Dev

从jQuery / AJAX请求执行PHP文件

来自分类Dev

对 PHP 的 jQuery AJAX 请求返回错误 500

来自分类Dev

PHP:对PHP的AJAX请求

来自分类Dev

用json和ajax请求隐藏php echo输出

来自分类Dev

用json和ajax请求隐藏php echo输出

来自分类Dev

如何使用jQuery.ajax向文件php发送请求

来自分类Dev

通过jquery ajax请求访问根目录之外的php文件

来自分类Dev

发布到php脚本时,jQuery AJAX请求未触发。

来自分类Dev

jQuery ajax获取对php的请求,未检索任何数据

来自分类Dev

无法将jQuery ajax()请求发送到php

来自分类Dev

如何保护来自黑客的php,jquery,ajax请求?

来自分类Dev

jQuery ajax从所请求的php页面不返回任何内容

来自分类Dev

jQuery AJAX请求-处理特殊字符以响应PHP页面

来自分类Dev

jQuery:Ajax获取请求不适用于PHP

来自分类Dev

PHP AJAX JQuery xmlhttp请求Get方法始终发送1

来自分类Dev

对php对象的ajax请求

来自分类Dev

jQuery AJAX - 在单个请求中将文件和变量发送到 PHP

来自分类Dev

Symfony 3.4和PHP版本

来自分类Dev

关于jQuery Ajax和PHP

来自分类Dev

Symfony和AJAX 404响应

来自分类Dev

对 PHP 文件的 AJAX 请求、PHP 文件的安全性和可访问性

来自分类Dev

非阻塞对PHP的Ajax请求

来自分类Dev

Ajax请求PHP返回HTML

来自分类Dev

在PHP中设置AJAX请求