JQuery Ajax-вызов на сервер Twitter Finagle

Я изо всех сил пытаюсь получить строку JSON, отправленную с веб-страницы на мой сервер.

На веб-странице я делаю следующее:

  $.ajax({
     type: "POST",
     url: url,
     data: JSON.stringify(formData),
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function(msg) {
       // TODO: Listen for server ok.
       alert(msg);
       }

На стороне сервера мой код Scala выглядит следующим образом:

import com.twitter.finagle.Service
import com.twitter.finagle.builder.Server
import com.twitter.finagle.builder.ServerBuilder
import com.twitter.finagle.http._
import com.twitter.util.Future
import java.lang.String
import java.net.InetSocketAddress
import org.jboss.netty.buffer.ChannelBuffers
import org.jboss.netty.util.CharsetUtil.UTF_8

/**
 *
 */
object HttpServerExample {
  def main(args: Array[String]) {

    class EchoService extends Service[Request, Response] {
      def apply(request: Request) = {
        println(request.getContent());

        val response = Response()
        response.setContentType(MediaType.Html, UTF_8.name)
        val responseContent: String = "Thanks"
        response.setContent(ChannelBuffers.copiedBuffer(responseContent, UTF_8))
        Future.value(response)
      }
    }

    val echoServer: Server = ServerBuilder()
      .codec(RichHttp[Request](Http()))
      .bindTo(new InetSocketAddress("127.0.0.1",8080))
      .name("EchoServer")
      .build(new EchoService())

   }
}

По какой-то причине содержимое запроса пусто.

Если я изменю вызов ajax на:

 $.ajax({
     type: "POST",
     url: url,
     data: formData,
      success: function(msg) {
       // TODO: Listen for server ok.
       alert(msg);
       }

Затем я могу получить данные в качестве параметров.

Как получить строку JSON на сервере? Я неправильно отправляю или неправильно получаю?


person Jack    schedule 08.02.2012    source источник


Ответы (1)


Вместо:

 $.ajax({
     type: "POST",
     url: url,
     data: JSON.stringify(formData),
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function(msg) {
       // TODO: Listen for server ok.
       alert(msg);
       }

Я сейчас использую:

   $.post(url,
      JSON.stringify(formData),
      function(msg) {
         // TODO: Listen for server ok. If this is successfull.... clear the form
         alert(msg);
      },
      "json");
person Jack    schedule 09.02.2012