سلام خدمت اساتید گرامی . بنده اولین بارم هستش از ری اکت در کنار php استفاده میکنم و اولین بارم هست rest api ميسازم .
الان مسئله اینه که من یه سری دیتا توی دیتابیس mysql ذخیره کردم . یه api ساختم با php كه دیتا هارو صرفا به شکل JSON در بیارم تا تو فرانت اند استفاده کنم با پست من هم دیتا هارو تو یو آر ال دارم ولی وقتی url اي پی آی رو توی ری اکت میزنم تا دیتا های json رو استخراج كنم اين ارور توي كنسولم مياد . میشه لطفا راهنمایی کنید ؟
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
در زمن اینم کد های ری اکت من :
import React, { useState, useEffect } from 'react';
const url = '../../backend/api/read.php' ;
const InformationTable = () => {
const [data, setData] = useState([]);
const getData = async () => {
const response = await fetch(url);
const data = await response.json();
setData(data);
console.log(data) ;
};
useEffect(() => {
getData();
}, []);
return(
<h1>Hello WOlrd</h1>
)
}
export default InformationTable ;
فکر نمیکنم مشکل از بک اند باشه ولی اگه لازمه اینم کد فایل read در پوشه api
<?php
///////Headers :
header('Access-Conrol-Allow-Origin:*') ;
header('Content-Type:application/json') ;
//// files :
include('../db/db.php');
include('../models/models.php') ;
////// Product Objects :
$product = new Product($conn) ;
///// Product Query :
$result = $product->read() ;
////// Get Row Count :
$num=$result->rowCount() ;
if($num > 0 ){
/// Product array :
$product_arr = array() ;
while($row =$result->fetch(PDO::FETCH_ASSOC)){
extract($row) ;
$product_item = array(
'id'=>uniqid() ,
'name'=>$name ,
'price'=>$price,
'percent'=>$percent,
'pricewithoffer'=>$pricewithoffer,
'img'=>$img
) ;
///// Push To data :
array_push($product_arr,$product_item) ;
}
///// turn on to JSON :
echo json_encode($product_arr) ;
}
?>از ریسپانس JSON هم عکس بزارین
دوست عزیز این ریسپانس api تو پست منه :فقط چون json خیلی بزرگیه از قسمتیش عکس گذاشتم
@saman1111
[
{
"id": "5ff6a88f2901f",
"name": "فرش ماشینی سهند کد VF17.VD زمینه سرمه ای",
"price": "133,000 تومان",
"percent": "٪5",
"pricewithoffer": "140,000",
"img": "https://dkstatics-public.digikala.com/digikala-products/112283329.jpg?x-oss-process=image/resize,m_lfit,h_600,w_600/quality,q_90"
},
{
"id": "5ff6a88f2929b",
"name": "میکروفون یقه ای اینوی مدل YW-001",
"price": "34,000 تومان",
"percent": "٪31",
"pricewithoffer": "49,000",
"img": "https://dkstatics-public-2.digikala.com/digikala-products/111252914.jpg?x-oss-process=image/resize,m_lfit,h_600,w_600/quality,q_90"
},
{
"id": "5ff6a88f292aa",
"name": "میز تحریر تاشوو تنظیم شو میلاد سفید 70",
"price": "182,400 تومان",
"percent": "٪5",
"pricewithoffer": "192,000",
"img": "https://dkstatics-public.digikala.com/digikala-products/2691865.jpg?x-oss-process=image/resize,m_lfit,h_600,w_600/quality,q_90"
},
{
"id": "5ff6a88f292b2",
"name": "ماژیک وایت برد کد x-828 M بسته 4 عددی",
"price": "12,400 تومان",
"percent": "٪9",
"pricewithoffer": "13,700",
"img": "https://dkstatics-public.digikala.com/digikala-products/114062863.jpg?x-oss-process=image/resize,m_lfit,h_600,w_600/quality,q_90"
},شاید پاسخ شما همینجا باشد
آقای موسوی میشه یه کمکی بکنید خیلی حیاتیه .
@hesammousavi
شما به جای این که آدرس رو اینطوری توی متغیر بزارید خودتون آدرس کامل رو بدید
الان داره ریسپانس HTML میگیره