Heim  >  Artikel  >  WeChat-Applet  >  Kapselung und Verbesserung von Netzwerkanfragen für WeChat-Miniprogramme

Kapselung und Verbesserung von Netzwerkanfragen für WeChat-Miniprogramme

PHPz
PHPzOriginal
2017-04-02 14:57:291471Durchsuche

Erklären Sie zunächst einen Fehler im Miniprogrammdokument, der dazu führte, dass der Server bei Anfragen keine Parameter empfing

Beispielcode:

wx.request({
 url: 'test.php', //仅为示例,并非真实的接口地址
 data: {
 x: '' ,
 y: ''
 },
 header: {
 'Content-Type': 'application/json'
 },
 success: function(res) {
 console.log(res.data)
 }
})

Der Header im Inhalt- Typ: Sie sollten den Inhaltstyp in Kleinbuchstaben verwenden, damit der Server Parameter empfangen kann. Ich habe lange gekämpft und es funktioniert immer noch nicht, nachdem ich den Server gewechselt habe. Es stellt sich heraus, dass dies das Problem ist. Der Parameter befindet sich in der Anforderungsnutzlast und kann vom Server nicht empfangen werden. Nach Verwendung der folgenden Konvertierung

function json2Form(json) {
 var str = [];
 for(var p in json){
 str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));
 }
 return str.join("&");
}

handelt es sich schließlich um ein Inhaltstypproblem. Am Ende war es in Ordnung, wenn ich es in Kleinbuchstaben umwandelte. Ich hatte das Gefühl, dass WeChat, so ein großartiges Team, einen sehr kleinen Fehler gemacht und die Entwickler frustriert hat. Sag es mir nicht, lass uns in den Code einsteigen.

1. HTTP-Anfrageklasse

import util from 'util.js';
/**
 * url 请求地址
 * success 成功的回调
 * fail 失败的回调
 */
function _get( url, success, fail ) {
 
 console.log( "------start---_get----" );
 wx.request( {
 url: url,
 header: {
  // 'Content-Type': 'application/json'
 },
 success: function( res ) {
  success( res );
 },
 fail: function( res ) {
  fail( res );
 }
 });
 console.log( "----end-----_get----" );
}
/**
 * url 请求地址
 * success 成功的回调
 * fail 失败的回调
 */
function _post_from(url,data, success, fail ) {
 console.log( "----_post--start-------" );
 wx.request( {
 url: url,
 header: {
  'content-type': 'application/x-www-form-urlencoded',
 },
 method:'POST',
 data:{data: data},
 success: function( res ) {
  success( res );
 },
 fail: function( res ) {
  fail( res );
 }
 });
 console.log( "----end-----_get----" );
}
 
 /**
 * url 请求地址
 * success 成功的回调
 * fail 失败的回调
 */
function _post_json(url,data, success, fail ) {
 console.log( "----_post--start-------" );
 wx.request( {
 url: url,
 header: {
  'content-type': 'application/json',
 },
 method:'POST',
 data:data,
 success: function( res ) {
  success( res );
 },
 fail: function( res ) {
  fail( res );
 }
 });
 console.log( "----end----_post-----" );
}
module.exports = {
 _get: _get,
 _post:_post,
 _post_json:_post_json
}

Testfall

2.1 Get-Anfrage

//GET方式
let map = new Map();
map.set( 'receiveId', '0010000022464' );
let d = json_util.mapToJson( util.tokenAndKo( map ) );
console.log( d );
var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId?data='+d;
network_util._get( url1,d,
function( res ) {
console.log( res );
that.setData({
 taskEntrys:res.data.taskEntrys
});
}, function( res ) {
console.log( res );
});

2.2 POST-Anfrage

//Post方式
 let map = new Map();
 map.set( 'receiveId', '0010000022464' );
 let d = json_util.mapToJson( util.tokenAndKo( map ) );
 console.log( d );
 var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId';
 network_util._post( url1,d,
 function( res ) {
 console.log( res );
 that.setData({
  taskEntrys:res.data.taskEntrys
 });
 }, function( res ) {
 console.log( res );
 });

Wirkung

Kapselung und Verbesserung von Netzwerkanfragen für WeChat-Miniprogramme

Das obige ist der detaillierte Inhalt vonKapselung und Verbesserung von Netzwerkanfragen für WeChat-Miniprogramme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn