Почему функция успеха не работает весной mvc

при нажатии кнопки отправки в jquery выполняется приведенный ниже вызов ajax, но его функция успеха не работает.

                $.ajax({
                    url: "hai.htm",
                    type: "POST",
                    dataType: "application/json",
                    data:{
                        name:name,
                        pass:pass,
                       },
                    success: function (data) {
                        alert("success");
                     var obj = JSON.parse(data);  
                      alert(obj[0].name);
            }   
             error: function (error) {
                alert('error; ' + eval(error));
                console.log(error);
            }             
                })

изображение класса контроллера показано здесь

мой класс контроллера

package com.safecare.spring;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class controller {

    @RequestMapping(value = "hai")
    public @ResponseBody Map hai(@RequestParam(value = "name",required = false) String name,@RequestParam(value = "pass",required = false) String pass) {
        Map ma=new HashMap();
       ma.put("name", name);
       ma.put("pass", pass);
        System.out.println(name);

        return ma;

    }
}

сообщение об ошибке выглядит следующим образом: «Ресурс, идентифицированный этим запросом, способен генерировать только ответы с характеристиками, неприемлемыми в соответствии с заголовками запроса« принять »».

вы уверены, что звонок успешен?

Chase Choi 26.10.2018 06:24

да iam. но почему?

shihab ve 26.10.2018 06:25

Попробуйте также добавить функцию «ошибка». Похоже, ваш звонок завершился ошибкой. Вы уверены в указанном URL?

Sivaprasad 26.10.2018 06:30

Вместо вызова контроллера вы вызываете htm-файл. измените URL-адрес на URL-адрес вашего контроллера.

Sivaprasad 26.10.2018 07:05

нет, это не правильно ..

shihab ve 26.10.2018 07:11

когда я добавляю функцию ошибки, она возвращает объект json по ошибке ..

shihab ve 26.10.2018 07:11

@shihabve: Всегда старайтесь размещать не изображение, а текст при вставке примеров кода.

Sabir Khan 26.10.2018 07:12

@SabirKhan: хорошо, я сделаю ...

shihab ve 26.10.2018 07:14

поместите отладчик в контроллер и сначала убедитесь, что контроллер вызывается и возвращается ответ. Это исключит сомнение в неправильном URL-адресе. Во-вторых, добавьте в скрипт и метод ошибки.

Sabir Khan 26.10.2018 07:15

@SabirKhan: добавлена ​​функция ошибки, теперь данные возвращаются с предупреждением как {error; [Объект Object]}

shihab ve 26.10.2018 07:20

@shihabve ajax ожидает значение json, но вы возвращаете карту.

Sivaprasad 26.10.2018 07:51
1
11
115
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это

@Controller
@RequestMapping("/controllerName")
public class Controller{
    @RequestMapping(value="/hai", ... )
    public @ResponseBody String hai( ... ) {
        JSONObject obj = new JSONObject();
        obj.put("name", name);
        obj.put("pass", pass);
        return obj.toString();
    }
}

Затем обновите свой ajax как,

               $.ajax({
                    url: "/ContextPath/controllerName/hai",
                    type: "POST",
                    dataType: "json",
                    data:{
                        name:name,
                        pass:pass,
                    },
                    success: function (data) {
                        alert("success");
                        alert(data.name);
                    },
                    error: function(){
                        alert("Error");
                    }
                });

В URL-адресе замените / ContextPath на свой путь контекста.

Ответ принят как подходящий

моя проблема решена. используйте GSON в классе контроллера.

@Controller
public class controller {

    @RequestMapping(value = "hai")
    public @ResponseBody String hai(@RequestParam(value = "name",required = false) String name,@RequestParam(value = "pass",required = false) String pass) {
        Map ma=new HashMap();
       ma.put("name", name);
       ma.put("pass", pass);
        System.out.println(name);
        Gson ob=new Gson();
        ob.toJson(ma);

        return ob.toJson(ma);

    }

Спасибо за ответ

Другие вопросы по теме