Zhang Chengdong started his football career playing for Liaoning Whowin's youth academy until Serie A side A.C. Milan considered him a promising enough prospect to train with them in 2004.[2] After his short period with the club, he returned to Liaoning and was promoted to the club's first team, making his debut for the club on 21 May 2006 in a 5–0 loss against Shandong Luneng.[3] When the club was relegated in the 2008 season, Zhang's contract was up for renewal; and while he was considered as a long term star for the club, he could not agree upon a suitable contract which he believed was too low.
Without a club, he returned home to train before going to Portugal to advertise his services until third tier side Mafra took him on a free transfer on 23 September 2009.[4] He was quickly integrated into the team; however, it was only once he scored his first hat-trick on 21 January 2010 in a 4–3 loss against Sporting CP in the 2009–10 Taça de Portugal did he become noticed in the club.[5]
Zhang transferred to Primeira Liga side União Leiria in July 2010. He made his debut for the club on 16 August 2010 in a 0–0 draw against Beira-Mar, becoming the first Chinese footballer to play in the Primeira Liga. After his loan spell at the club, he was loaned out again, this time to Beira-Mar. Zhang impressed during his stint at Beira-Mar, scoring six goals in 26 appearances. After the 2011–12 season, Beira-Mar and several top tier sides were reportedly interested in signing Zhang on a permanent transfer. Many top tier Chinese teams wished to sign him as well, but Zhang decided to ply his trade elsewhere. In August 2012, Zhang transferred to 2. Bundesliga side Eintracht Braunschweig. He made his debut for the club on 15 September 2012 in a 1–0 win against SSV Jahn Regensburg.
On 22 July 2013, Zhang transferred to Chinese Super League side Beijing Guoan. He made his debut for the club on 25 August 2013 in a 4–0 win against Dalian Aerbin. He scored his first goal for the club on 17 May 2014 in a 2–1 loss to Shanghai Shenxin. On 21 July 2015, Zhang transferred to La Liga side Rayo Vallecano on loan for the 2015–16 season.[6] He made his debut for the club on 5 December 2015 in a 2–0 win against Getafe in the 2015–16 Copa del Rey.[7] He made his league debut on 30 December 2015 in a 2–0 loss against Atlético Madrid, becoming the first Chinese footballer to play in La Liga.
On 13 January 2017, Zhang moved to fellow top-tier side Hebei China Fortune for a record-breaking domestic transfer fee.[8] He made his debut for the club on 5 March 2017 in a 0–0 draw against Henan Jianye.[9] He scored his first goal for the club on 29 April 2017 in a 4–0 win against Tianjin Teda.
Zhang made his debut for the Chinese national team on 3 March 2010 in a 2–0 loss against Portugal; however, the game was not recognised by FIFA.[11] He made his official debut for China on 6 October 2011 in a 2–1 win against the United Arab Emirates.