JK-flip flop using gate level description in Verilog give me a timming error
I found this post: Is it possible to create a working JK-flip flop using gate level description in Verilog

Notice that the earlier question seems to be asking only about formally describing the JKFF in Verilog and simulating its behavior. While you seem to want to actually synthesize the device and implement it in an FPGA. These are two different problems.

I would like to know why

The real problem is that FPGAs aren't designed that way. They provide certain logic resources, mainly look-up tables (LUTs) which are just small RAMs that can be configured to act like arbitrary logic gates, and D flip-flops (DFFs),  typically with a choice of asynchronous or synchronous reset. They also have routing resources, that is, paths for signals to travel between the logic blocks.
You can configure some LUTs to act like AND, OR, and NOT gates. And hook them up together to act like a JK flip-flop. But this isn't a very efficient use of resources, when you could use a DFF that is actually built in to the FPGA.
Therefore, the synthesis tool is simply not designed to work with this kind of design. It is designed to work with designs where all the combinatorial logic is implemented in LUTs and all the state is stored in DFFs. When your tool sees a feedback path in combinatorial logic that will preserve state, it simply isn't built to handle that, so it reports an error.

and how make it works!

The best way to make an FPGA design work is to design it around the resources that the FPGA actually provides: LUTs and DFFs. You can design your frequency divider to use D flip-flops instead of JK, and it will use much fewer FPGA resources and the synthesis tool will be much better able to optimize it. It will even likely use additional special-purpose logic resources (like carry chains) to optimize the counter implementation.