Not quite an expert on it, but as an example, if you have a level 20 Pokemon defeat a level 30 Pokemon, you might get 500 exp. points. If you were to beat that same level 30 Pokemon with a level 50, though, your Pokemon might only get 200 exp. points.
So basically, the weaker the Pokemon that you're facing, the fewer exp. points you'll receive from the battle.