Most English-language news sources and people in America pronounce the name of the city (上海) with a long a sound as in "way" within the "shang (上)" syllable, but it's not pronounced that way in Chinese; the actual pronunciation of 上 is with the "ah" sound as in "father," and most Chinese dialects pronounce it more similarly to Mandarin than how it's pronounced in English. Why?
As a general rule, English speakers don't learn the pronunciation of place names from speakers of that language; they use general rules for pronunciation. Hence [br̩lɪn] instead of [bɛrlin], [ɔzlow] instead of [uʃlu], [pɛrɪs] instead of [paʁi], and Qatar (Standard Arabic [ˈqɑtˤar]) is a real problem, so I've heard [ˈkɑɾṛ], [kəˈtɑr] and [kæɾr̩]. Colin Powell would pronounce it as [gʌtr̩], close to the local dialect pronunciation [ˈgitˤar]. We also never pronounce Mandarin "h" as [x], and "zh" and "j" are not distinguished. Additionally, in American English, front vowels are raised a bit more before the voiced velars (g, ŋ) since there's no tense-lax contrast.