求大佬解答?万分感谢
问题描述:
第一道题
/**
@fn makeUrl(action, params?)
生成对后端调用的url. 后端接口的基础URL固定为`http://oliveche.com/quiz/api.php/`
- action: 接口名
- params: URL参数,可以不传
示例:
var url = makeUrl("setOrder"); // 结果:url="http://oliveche.com/quiz/api.php/setOrder"
var url = makeUrl("setOrder", {id: 100}); // 结果:url="http://oliveche.com/quiz/api.php/setOrder?id=100"
var url = makeUrl("setOrder", {id: 100, name: "P&G"}); // 结果:url="http://oliveche.com/quiz/api.php/setOrder?id=100&name=P%26G"
*/
function makeUrl(action, params) {
// TODO: 请在此实现函数:
}
第二道题
/**
@fn callSvr(ac, param?, fn?, postParam?)
发起Ajax调用。(结尾标注问号的参数表示可以不传或为null)
调用的URL地址由`makeUrl(ac, param)`生成,如果第4参数postParam非空,则自动使用HTTP POST请求,否则使用HTTP GET请求。
接口返回数据是一个JSON格式的数组:
- 当调用成功时,返回格式如`[0, {"token": "12345"}]`(数组首元素为0表示调用成功,非0为失败), 此时应调用回调函数 `fn({"token": "12345"})` (fn是第3参数)
- 当调用失败时,返回格式如`[1, "数据库错误"]` 这时应中断执行, 并报错, 比如此例中错误信息为"数据库错误"
示例:调用接口Quiz.get / Quiz.set
// 发HTTP GET请求
callSvr("Quiz.get", {id: 202}, function (data) {
console.log(data);
});
// 指定了postParam,则发HTTP POST请求
callSvr("Quiz.set", {id: 202}, function (data) {
console.log(data);
}, {name: 'ab', value: 'ac'});
*/
function callSvr(ac, param, fn, postParam) {
// TODO: 请在此实现函数:(本例中已包含jQuery库, 可以用jQuery ajax实现,也可以用你熟悉的任何库来实现, 比如fetch/axios/xhr等)
}
答
const baseUrl = `http://oliveche.com/quiz/api.php/`
function makeUrl(action, params) {
// TODO: 请在此实现函数:
let url = baseUrl + action
let str = ''
if (params !== undefined) {
url += '?'
for (let key in params) {
let value = params[key]
str = str + key + '=' + value + '&'
}
str = str.substr(0, str.length - 1)
}
return url + str
}
function callSvr(ac, param, fn, postParam) {
let url = makeUrl(ac, param)
let method = postParam === undefined ? 'GET' : 'POST'
$.ajax({
url: url,
method: method,
data: postParam ? postParam : null,
success: function (res) {
res = JSON.parse(res)
if (res[0] === 0) {
fn(res[1])
} else {
alert(res[1])
}
}
})
}
如上,满意请采纳,谢谢。
答
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632