- 需求的场景描述(希望解决的问题)
后台查询数据库时返回到前端页面的数据异常(且会报错404就是你
request
的地址404),在浏览器中PHP查询数据显示正常,也会报错404.
前端WXML
``
<!--pages/demo/demo.wxml-->
<view class="list">
<view class="list-item" bindtap="testCgi">
<text>测试</text>
</view>
<view class="list-item" wx:if="{{requestResult}}">
<text class="request-text">{{'请求结果:' + requestResult}}</text>
</view>
</view>
``
前端JS:
``
// pages/demo/demo.js
var qcloud = require('../../vendor/wafer2-client-sdk/index')
var config = require('../../config')
var util = require('../../utils/util.js')
Page({
data: {
requestResult: ''
},
testCgi: function () {
var that = this;
wx.request({
url: `${config.service.host}/weapp/data_query`,//此处填写你后台请求地址
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded' // 改变默认值为这个配置
},
// dataType: 'json', // 添加这个配置
data: {},
success: function (res) {
// success
console.log(res.data);//打印请求返回的结果
console.log("===================");
that.setData({ requestResult: res.data })
},
fail: function (res) {
// fail
},
complete: function (res) {
// complete
}
})
}
})
``
后端PHP
``
<?php
/**查询单行数据**/
//$name=$_GET["name"];//接收参数
$hostname_conn = "localhost";
$database_conn = "";//数据库名
$username_conn = "";//用户名
$password_conn = "";//自己数据库的密码
//连接MYSQL数据库
$conn = mysqli_connect($hostname_conn, $username_conn, $password_conn,$database_conn)or trigger_error(mysqli_error(),E_USER_ERROR);
// $insert = "INSERT INTO `student` (`ID`, `name`, `sex`, `age`) VALUES ('5', 'qqqqq', '1', '11')";
// mysqli_query($conn,$insert);
$sql = "SELECT *FROM student";
mysqli_query($conn, "set names 'utf8'");//不写这句有可能乱码
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo json_encode($row,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);//将请求结果转换为json格式
}
}
``
WXML显示
控制台报错:
浏览器页面显示:
- 希望提供的能力
希望能解决404问题,且页面只显示数据库中数据
服务端接口问题,我猜你用的CodeIgniter。具体要排查你PHP代码才行。
可为什么明明使用了PHP框架还要像你这样连接数据库呢,极有可能是你使用了CI的路由,但是没有按照CI的规则构建Controller页面。
那这个接口大体需要怎么排查呢?我是用来测试,要用PDO来连接数据库操作,只是用的不6。。
还有就是我如果用PDO进行操作数据库,返回的数据会包含HTML标签。
显示:
你不用框架 就不会有html代码了。
实在还解决不了,留下QQ我帮你
1449083165
可以加我啊,大哥。不过我已经解决了。我还是用了CI框架进行返还参数。
{
<?php
/**查询数据**/
defined('BASEPATH') OR exit ('No direct script access allowed');
header('Content-Type: application/json');
use \QCloud_WeApp_SDK\Mysql\Mysql as DB;
class Data_querys extends CI_Controller{
public function index() {
$rows = DB::select('student',['*']);
$num = count($rows);
for($i=0;$i<$num;++$i){
echo json_encode($rows[$i],true);
}
}
}
?>
}
看看你的后台是不是用nginx转发的?如果是的话要在接口名称后面+.do
我们的数据返回是这样的,是一个数组[],
404页面是客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应,且不知道原因所返回的页面。
我好像没懂你的意思?还是没清楚是什么原因导致的?PHP界面是存在的,为什么还会404呢?
是不是返回的状态 是404
嗯,返回了查询结果与404。上面有详细截图。
我的意思 是 你服务器返回 的 Status Code 是404么
这个 Status Code 服务器是可以指定的
浏览器F12 网络 看看这个 Status Code 是不是404吧
状态是404
返回有数据 就是服务器问题
是404呀。怎么破?