ashx 接口调用_51.Qt-使用ajax获取ashx接口的post数据
由于当前C++项目需要使用ajax库去post调用ashx接口,接口地址如下所示:
需要传递的参数如下:
然后发现qml比较好调用ajax.js库,所以本章通过C++界面去获取qml方法来实现调用ashx接口(以一个C++界面demo程序为例)
1.抓post数据
通过网页获取到的post数据如下所示:
所以查询20191121~20191122期间时则填入内容: "deptCode=021&startDate=20191121&endDate=20191122"
2.导入ajax.js库
ajax.js文件如下所示:
//GETfunctionget(url, success, failure)
{var xhr = newXMLHttpRequest;
xhr.open("GET", url);
xhr.onreadystatechange=function() {
handleResponse(xhr, success, failure);
}
xhr.send();
}//POSTfunction post(url, arg, success, failure)
{var xhr = newXMLHttpRequest;
xhr.open("POST", url);
xhr.setRequestHeader("Content-Length", arg.length);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); //用POST的时候一定要有这句xhr.onreadystatechange=function() {
handleResponse(xhr, success, failure);
}
xhr.send(arg);
}//处理返回值function handleResponse(xhr, success, failure){if (xhr.readyState ==XMLHttpRequest.DONE) {if (xhr.status == 200){if (success != null && success !=undefined)
{var result =xhr.responseText;try{
success(result, JSON.parse(result));
}catch(e){
success(result, {});
}
}
}else{if (failure != null && failure !=undefined)
failure(xhr.responseText, xhr.status);
}
}
}
3.写main.qml
import QtQuick 2.3import QtQuick.Window2.2import"ajax.js" asAjax
Item {function getWrenchTools(deptCode,startDate,endDate) {
console.log("Got message:", deptCode,startDate,endDate)//打印参数数据
Ajax.post("http://10.194.102.253/WLPTService/Pages/Tools/GetNLToolsByDeptCode.ashx","deptCode="+deptCode+"&startDate="+startDate+"&endDate="+endDate+"",
Widget.invokeFunc);
}
这里表示定义一个getWrenchTools()方法,当post成功并返回数据时,则调用Widget.invokeFunc()回调函数(Widget: 该qml对应的C++类,后面会讲怎么捆绑的)
4.widget界面如下
然后写widget.h
#ifndef WIDGET_H#define WIDGET_H#include#include#include#include#include#include
namespaceUi {classwidget;
}class widget : publicQWidget
{
Q_OBJECT
QQmlApplicationEngine engine;
QObject*engineObject; //指向运行的qml对象
public:explicit widget(QWidget *parent = 0);~widget();private:
Ui::widget*ui;public:
Q_INVOKABLEvoidinvokeFunc(QVariant data1,QVariant data2);privateslots:voidon_pushButton_clicked();
};#endif //WIDGET_H
写widget.cpp
#include "widget.h"#include"ui_widget.h"#include#includewidget::widget(QWidget*parent) :
QWidget(parent),
ui(newUi::widget)
{
ui->setupUi(this);
engine.rootContext()->setContextProperty("Widget",this);//将QML中的Widget变量指向为当前类.从而使QML和widget类连接起来
engineObject= QQmlComponent(&engine, "qrc:/main.qml").create(); //创建qml并获取运行中的qml对象
}
widget::~widget()
{deleteui;
}voidwidget::invokeFunc(QVariant data1,QVariant data2)
{
ui->plainTextEdit->setPlainText(data1.toString());
}voidwidget::on_pushButton_clicked()
{
QVariant depatment= "021";
QVariant start= ui->start->text();
QVariant end= ui->end->text(); //"结束日期"
QMetaObject::invokeMethod(engineObject,"getWrenchTools",Q_ARG(QVariant, depatment)\
,Q_ARG(QVariant, start),Q_ARG(QVariant, end));
}
engine.rootContext()->setContextProperty("Widget",this)的作用:
将QML中的Widget变量指向为当前类.从而使QML和widget类连接起来, 然后main.qml如果post成功则调用当前类的invokeFunc(QVariant data1,QVariant data2)方法,从而实现数据返回.
当按下同步按钮时,则调用on_pushButton_clicked():
由于engineObject指向运行中的qml对象,然后我们通过invokeMethod()就可以方便的请求调用qml对象中的getWrenchTools()函数.从而实现post请求
点击同步后,效果如下
注意-如果出现QQmlComponent: Component is not ready字段,说明qml和js所在路径不在界面文件夹里
创建文件的时候,就需要将文件都放在界面目录中,才行:
ashx 接口调用_51.Qt-使用ajax获取ashx接口的post数据相关推荐
- Ajax怎么获取天气,Ajax获取全国天气预报的API数据
这次给大家带来Ajax获取全国天气预报的API数据,Ajax获取全国天气预报API数据的注意事项有哪些,下面就是实战案例,一起来看一下. 预览图(比较简单粗糙) 聚合数据全国天气预报接口:https: ...
- 微信支付分 - 接口调用几个重要参数获取
调用接口需要以下必须参数,此处介绍小程序的必须参数获取及来源. 1.appid. 申请支付分时对应的公众号,小程序,移动应用appid.此appid需要和填写配置表中的一致,和微信配置的service ...
- Vue 拦截器 多接口调用 实现唯一loding效果 解决同步接口调用loding闪动
大纲 1.引入`import axios from 'axios'` 2.创建loding函数`Loading.service`,创建计数变量`requestCount = 0`, 3.创建axios ...
- 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能
在上一篇,我们搭建了开发环境.本篇,使用C++代码真正实现功能.我们使用UDP协议从手机上指定发送的目的地.端口.效果如下图,完整工程参考https://gitcode.net/coloreagles ...
- 如何用 ajax 连接mysql数据库,并且获取从中返回的数据。ajax获取从mysql返回的数据。responseXML分别输出不同数据的方法。...
开讲前,先说下网上,大部分的关于这方面的博文或者其他什么的,就我自己的感觉,第一说得不详细,第二语言不能很好的被初学者了解. 我这篇博文的标题之所以用了三句,是为了方便其他人好查找: 这里介绍的方法有 ...
- 利用jquery的ajax获取后台返回的json数据为空
错误示例 $.ajax({type:'POST',url:'',data:'',success:function(data){console.log(data);console.log(data.en ...
- 使用 Qt for Android 获取并利用手机传感器数据(上篇)开发环境省心搭建
现代手机拥有许多传感器,包括地磁.姿态.GPS.光照.温度.气压.摄像.声音.电磁等,完全就是一个高度集成的科学仪器.不夸张的说,一部手机加上一个外围的计算机和控制系统,做一个功能较强的自主移动机器人 ...
- 使用PHP通过AJAX获取到JSON文件的数据,点击按钮后添加url 跳转到指定页面
html前端页面.通过AJAX异步获取内容 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- java短信接口 调用_带你了解短信接口的调用
查看接口说明 image.png 注册账号 注册成功的页面如下: image.png 设置短信内容的签名 比如:将短信签名设置为yzc image.png 查取短信接口密钥 image.png 设计J ...
最新文章
- mysql sql demo
- android u盘拷贝文件大小,用手机U盘备份或导出手机文件,还能扩容
- 利用android studio 生成 JNI需要的动态库so文件
- android传感器获取运动方向,Android开发者指南-运动传感器Motion Sensor[原创译文]...
- 从战中反弹:将Git提交信息作为JSON返回
- MATLAB中MEX文件的编写与调试
- mysql离散查询_如何写出高性能的MySQL查询
- python删除链表中重复的节点_删除链表中所有值与Python相同的节点的程序
- 蔚来事件后 理想和小鹏改了“辅助驾驶系统”官方宣传用词
- Java按包编译jar_java用命令行编译运行时带有包和使用外部jar包的情况
- Tomcat 指定jdk
- java 管道流_Java IO7:管道流、对象流
- Blue Prism如何成为RPA领域魔力象限领袖
- 《软件工程与实践》 |(一)软件工程基础概述 知识梳理
- 下载CSS参考手册之后打开却无法显示
- 免费获取全球生物量密度1km网格tif数据(GEDI L4B Gridded Aboveground Biomass Density, Version 2)
- 小飞鱼平台介绍——小飞鱼开发者服务平台业务介绍
- Hazelcast源码剖析之Eviction
- Source Insight使用教程(一):导入工程
- 长度单位换算python_长度单位换算表-在线长度单位转换器