The most difficult part of online surveys is that they are so optional. If the survey is part of a required course, response rates can be raised as long as the end-users know that their survey responses are also required, and that there will be consequences of not answering (or rewards for answering).
One trick to get assessment data from courses with tests is to mix the survey questions in with the required test page(s). That is, if some of the questions on a test are survey questions (there is no "correct" answer), but the other questions are graded, there will be a significantly higher response rate to those questions. If your test/survey software only provides one question at a time, this feature can be bypassed by the end-users. Software like the ReadyGo Server Side Testing module can track pages with combinations of test and survey questions, and therefore get higher response rates.
Another trick is to make survey responses a requirement to be able to take the final exam in a required course. Incentives such as a raffle for survey participants provide a more positive form of invitation to take the survey.