解决Vue axios post请求,后台获取不到数据的问题方法

解决Vue axios post请求,后台获取不到数据的问题方法,第1张

最近做项目,需要用到vue,后台是php,第一次使用axios进行请求,本以为同ajax一样,会很简单,但是结果往往不让人满意啊,get请求很简单,这里就不说了,主要说下

post请求方式。

使用axios进行post请求,后台居然接收不到数据,这就纳闷了,于是网上一顿搜索,现在将所用的解决办法给大家说下:

1new

URLSearchParams方式

起初使用paramsappend("属性名":属性值)的方式,对于简单的数据传递这样是没有问题的,后台可以正常接收数据,但我发现一个问题,不知道大家有没有遇到过,当传递数据里含有数组时,你会发现传到后台的是字符串的形式

arr:a1,b1,c1

而非正常格式

arr:[a1,b1,c1]不符合我的要求,继续查找。

2Qsstringify方式

看到网上好多解决办法都在说qs,于是装了qs插件,使用方法也很简单。首先安装插件,然后注册组件,axiospost(url,Qsstringify(params)),在传递参数前,用qs转换下格式就可以了,Qs是将对象

序列化成URL的形式,以&进行拼接,在后台输出下接收的数据,嘿有值了,别提有多高兴了,刚乐呵没二分钟,等会再认真看看,这才发现当数据为空时qs居然给过滤掉了,直接没传,这叫一个伤心。。。

3改变后台接收方式

网上的帖子大部分都是在前端处理,但没什么太好的解决办法,于是把思路转到后台,改变后台的接收方式,最终使用file_get_contents('php://input')解决。

以上这篇解决Vue

axios

post请求,后台获取不到数据的问题方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:详解解决使用axios发送json后台接收不到的问题axios向后台传递数组作为参数的方法

1、直接当做js文件引入 ,相应变量就能获取到;

2、如果想读取本地json文件,需要环境,并且需要后台程序支持,不然出现安全性问题;

3、可以使用bloburl方式去获取文件,不需要后台支持,需要配环境 不然也有安全性问题;

用ajax请求这个json文件,换句话说,就是如下伪代码:

//请求/todojson这个路径时,返回json文件

$get('/todojson')done(function(data){

do something with the data

});

小程序小程序读取本地json文件

1在项目中新建data文件夹内新建存放json数据的js文件;

2在存放json数据的js文件中定义出口(其中出口名称为regionList,数据名为json);

 3页面引用:

1、let jsonData = require('//data/regionjs');

 2、onload中给数据传入

     _thissetData({

            multiArray: jsonDataregionList[0]multiArray,

            objectMultiArray: jsonDataregionList[0]objectMultiArray

      });

在Vue开发中使用Axios发送请求,Axios会默认将响应数据解析为JSON格式,并将其中的数字类型都转化为布尔类型。这是因为在JavaScript中,布尔类型和数字类型都是原始数据类型,并且相互转换的规则是0和NaN转化为false,其他数值转化为true。因此,Axios在解析JSON数据时,将数值0和1分别转换为false和true。

如果你需要保留数值类型,可以在Axios的配置中设置transformResponse属性,手动解析JSON数据并保留数值类型。示例如下:

axios({

method: 'get',

url: '/api/data',

transformResponse: [function (data) {

return JSONparse(data, (key, value) => {

if (typeof value === 'string' && /^-\d+(\\d+)$/test(value)) {

return parseFloat(value);

}

return value;

});

}]

})

这里的transformResponse属性是一个函数数组,可以定义多个解析响应数据的函数,Axios会按照数组顺序依次调用这些函数。在上面的示例中,我们定义了一个函数来解析JSON数据,判断每个属性值是否是一个数值字符串,如果是就手动转换为数值类型并返回,否则返回原值。

既然说没有真正获取到值,那我就试着说使用数组的push函数插入数据。所以在回调函数之前先定义一个变量,用来接收后端传递回来的数据。然后再把这个变量添加到数组里面,结果这样数组真的能获取到了值了,数据成功在页面渲染了。

js接收数据修改后的代码:

虽然具体不清楚bug的原因,但还算是解决了,希望也能帮到你!

查看JSON数据格式

获取到的JSON是对象中包含数组

返回查看发请求的代码

这是改之前的错误代码

mounted() {

thisaxiosget(`/ajax/cinemaList`)then(

response => {

// consolelog(responsedata)

var cinemas = responsedata

// consolelog(cinemas)

if (cinemas) {

thiscinemas = responsedata // 此处的thiscinemas是一个对象!!

thisisLoading = false

}

consolelog(thiscinemas)

}

)

}

修改后

mounted() {

thisaxiosget(`/ajax/cinemaList`)then(

response => {

// consolelog(responsedata);

var cinemas = responsedata

// consolelog(cinemas)

if (cinemas) {

thiscinemas = responsedatacinemas // 修改后

thisisLoading = false

consolelog(thiscinemas)

好了,解决了,大家不要像我一样这么傻啊。。。

第一种:

   比较常见的就是直接把字符串拼接,然后插入到元素中。

 

var html='' + datanum + '' + datafloor + '' + dataname + '' + datamoney + '';

elem[removed]=html;

   第二种:

   与第一种大致,先创建对象,然后添加到外层对象中

node=documentcreateElement("LI" textnode=documentcreateTextNode("Water""myList")appendChild(node);

  第三种:

  可以用网上mvvm框架,数据绑定比如:angular ,vue等 这里不举例子了 哈哈

  第四种:

  模板的比如 (templatejs)

[removed]            var viewCommand = function() {                var tpl = {

product: ["",                        "",                        "<>{#>",                        ""

]>",                        "<>",                        &#>{#>&#>{#>&#>",                        "",

]>

<>

以上就是关于解决Vue axios post请求,后台获取不到数据的问题方法全部的内容,包括:解决Vue axios post请求,后台获取不到数据的问题方法、php,JavaScript 如何读取并修改json文件、小程序如何使用json文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9561900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存