2017-10-12 1 views
0

Ajax senden Daten an den Controller .Method verwenden diese Daten, wenn die Schaltfläche geklickt.Meine Metode hat model.addatribute.Alert post null Wert .Warum?model.addAttribute funktioniert nicht mit jquery?

mein Controller

@RequestMapping(value = "index",method =RequestMethod.POST) 

@ResponseBody public List-Feld (@RequestParam ("tName") String name, @ RequestParam ("dname") String dname, Modell Modell) { String tn = name; Zeichenfolge dn = dname; Liste coname = new ArrayList <>(); versuchen { Verbindung mycon2 = DriverManager.getConnection ("jdbc: mysql: // localhost: 3306", "root", "1996"); DatabaseMetaData metaData2 = mycon2.getMetaData(); Ergebnismenge res4 = metaData2.getColumns (dn, null, tn, "%"); coname = neue ArrayList <>(); while (res4.next()) { Zeichenfolge column_name = res4.getString ("COLUMN_NAME"); coname.add (Spaltenname); }

 } 
     catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace(); 
     } 
return coname; 
    } 

Index html

<div id="RightPanel" style="width: 200; height: 100%; float: right;"> 
      <table class="table table-striped"> 
       <input type='text' id='tablehead' /> 
       <tr> 
        <th>Column name</th> 
       </tr> 
       <tr th:each="name : ${cname}"> 
        <td> th:text="${name}"</td> 
       </tr> 
      </table> 
     </div> 

JavaScript in HTML-Index

<script th:inline="javascript"> 

    function onclk(a,b) { 
     var search = { 
      "tName" : a, 
      "dName" :b 
     } 
     $.ajax({ 
     type: "POST", 
     url: "http://localhost:8092/index", 
     data: search, 
     dataType: "json", 
     success: function (data) { 
      var modelAttributeValue = [[${coname}]]; 
      alert(modelAttributeValue); }, 
     error: function(){ 
      alert('got error'); 
     } 
    }); 
+0

AFAIK diese Art von Markup ' 'läuft nur, wenn die Hauptseite loa ist ds. Es wird nicht im Zusammenhang mit einem Ajax-Aufruf ausgeführt. Ihr Ajax-Aufruf wird nach dem, was ich von Ihrer Aktionsmethode sehen kann, einfach einen String "index" zurückbekommen (als Ergebnis von return "index"; '). Dies wird in Ihrem 'success: function() {}' Callback empfangen, wenn Sie es als 'success: function (data) {alert (data); } 'dann sollte der Alarm" index "anzeigen, sobald der Ajax-Aufruf abgeschlossen ist (vorausgesetzt, dass er nicht fehlschlägt). Ich denke, du musst dein grundlegendes Verständnis dafür verbessern, wie Ajax funktioniert. – ADyson

Antwort

0

Try this:

<script type="text/javascript" th:inline="javascript"> 
    /*<![CDATA[*/ 
    function onclk(a,b) { 
     var search = { 
      "tName" : a, 
      "dName" :b 
     } 
     $.ajax({ 
     type: "POST", 
     url: "http://localhost:8092/index", 
     data: search, 
     dataType: "json", 
     success: function (data) { 
      var modelAttributeValue = [[${coname}]]; 
      alert(modelAttributeValue); }, 
     error: function(){ 
      alert('got error'); 
     } 
    }); 
    /*]]>*/ 
</script>