相关疑难解决方法(0)

将 jquery ajax POST 请求更改为 fetch api POST

我有一些 json 数据,已使用 $.ajax 发布到 API,但我想更新它以使用 fetch API。不过,我似乎设置了 Fetch API 请求最终返回 403,所以我一定错过了一些东西,但我无法解决。

阿贾克斯请求:

$.ajax({
        type: 'POST',
        url: url,
        data: {
            'title': data.title,
            'body': data.body,
            'csrfmiddlewaretoken': csrf_token,
            'request_json': true
        },
        success: function (data) {
            console.log(data)
        }
    });
Run Code Online (Sandbox Code Playgroud)

获取尝试(众多尝试之一):

let payload = {
    'title': data.title,
    'body': data.body,
    'csrfmiddlewaretoken': csrf_token,
    'request_json': true
}

let request = new Request(url, {
    method: 'post',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body:  JSON.stringify( payload )
});

fetch(request)
        .then((response) => {
            if (!response.ok) {
                throw Error(response.statusText);
            }
            return response; …
Run Code Online (Sandbox Code Playgroud)

javascript ajax fetch-api

5
推荐指数
1
解决办法
7986
查看次数

为Django POST请求获取API

我正在尝试从React / Redux / Django webapp删除jQuery,并用$.ajaxFetch API 替换该方法。我或多或少地使我的所有GET请求都能正常工作,并且似乎能够实现POST请求,但似乎无法以将POST数据实际放入Django request.POST对象的方式格式化请求。每次我点击/ sign_in视图时,该request.POST对象都是空的。我整个应用程序的后端都是使用Django表单构建的(没有Django模板,只有React控制的组件),我真的不想不必重写所有视图以使用request.bodyrequest.data

这是我认为可能相关的所有代码,请告诉我是否还有更多有用的代码:

这是咖喱函数,用于构建完整的POST数据并附加CSRF令牌:

const setUpCsrfToken = () => {
  const csrftoken = Cookies.get('csrftoken')

  return function post (url, options) {
  const defaults = {
    'method': 'POST',
    'credentials': 'include',
    'headers': {
      'X-CSRFToken': csrftoken,
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  }

  const merged = merge(options, defaults)
  return fetch(url, merged)
  }
}

export const post = setUpCsrfToken()
Run Code Online (Sandbox Code Playgroud)

这是我在React应用程序中使用的API方法:

export const signIn = data => {
  return post('/api/account/sign_in/', data)
} …
Run Code Online (Sandbox Code Playgroud)

django fetch reactjs redux fetch-api

5
推荐指数
1
解决办法
3012
查看次数

有没有更好的方法将JSON数据包转换为查询字符串?

我有一个输入字符串,将要么是JSON数据包,鼻翼:

{"PHONE":"555-513-4318","FIRSTNAME":"Austin","ARTISTID":"2","LASTNAME":"Weber"}
Run Code Online (Sandbox Code Playgroud)

或查询字符串,ala:

phone=555-513-4318&firstname=Austin&artistid=2&lastname=Weber
Run Code Online (Sandbox Code Playgroud)

为了我的目的,我需要始终使用后一种格式; 所以它是JSON数据时,我需要将它转换为查询字符串.它是用户输入,所以我不能保证它将是一个或另一个.

我正在使用jQuery,并且有以下代码,它可以工作.我只是想知道是否有更好的方法来解决它.

var data = '';
try {
    data = $.param($.parseJSON($("#content").val()));
} catch (e) {
    data = $("#content").val();
}

//... now do stuff with the `data` var...
Run Code Online (Sandbox Code Playgroud)

这里的逻辑是,如果字符串不是有效的JSON,那么$.parseJSON()将抛出异常,并且数据将仅设置为用户输入的原始值.

javascript jquery json

1
推荐指数
1
解决办法
1665
查看次数

标签 统计

fetch-api ×2

javascript ×2

ajax ×1

django ×1

fetch ×1

jquery ×1

json ×1

reactjs ×1

redux ×1