2016-04-01 9 views
0

Hey Leute Ich benutze Spring MVC Framework auf der Serverseite, und JS/Jquery, Ajax auf der Clientseite, Datenbank ist Oracle.Senden von jquery ajax Post an mehrere Tabellen mit Beziehungen (Fremdschlüssel) in einer Taste senden

Ich habe einen Formularassistenten mit 3 Schritten darin, und dieses Formular wird alle ausgefüllten Daten an mehrere Tabellen senden.

Hier ist, was funktioniert -> Einfügen in die Haupttabelle (Business Info Tabelle), alles ging in die Tabelle wie erwartet.

Hinweis: Die Tabelle wird mit Trigger- und Sequenzmethode auf automatischen Inkrementalwert gesetzt.

Anmerkung2: Alle unten stehenden JS sind unter einem Knopf senden Ereignis, ich trennte sie um zu zeigen, welche funktioniert und welche nicht.

 submit.on('click',function() { 

     var currentDate = new Date(); 

     var business_data = { 
       ubiId : '', 
       ubiName : business_name.val(), 
       ubiStartDate : moment(business_start_date.val() + ' ' + '00:00 AM', "DD-MM-YYYY hh:mm A"), 
       ubiAddress : business_address.val(), 
       ubiCity : business_city.val(), 
       ubiState : business_state.val(), 
       ubiPostcode : business_postcode.val(), 
       ubiPhone : business_phone.val(), 
       ubiEmail : business_email.val(), 
       ubiType : $('input:radio:checked', businesstype_list).val(), 
       ubiRegisterAgency: $('input:radio:checked', agency_list).val(), 
       ubiRegisterSsm: $('input:radio:checked', ssm_list).val(), 
       ubiStatus: 'P1', 
       ubiAppliedBy: Index.getUserInfo().cmsId, 
       ubiApplyDate: currentDate, 
       ubiSsmNo: ssm_no.val(), 
       ubiOwnerId: matrik_number.val(), 
       ubiOwnerYearstartBusiness: $('input:radio:checked', yearstart).val(), 
       ubiOwnerPhone: student_phoneno.val(), 
       ubiOwnerEmail: student_emailadd.val(), 
       ubiOwnerStudyyear: $('#student_studyyear').val(), 
       ubiOwnerFac: $('#student_faculty_code').val(), 
       ubiLecturerId : lecturer_name.val(), 
       deanId : dean_name.val() 
       //nature : nature_business.val() 
     }; 

     console.log(business_data); 

     $.ajax({ 
      type: "post", 
      url: 'home/umkei/ssuForm/create', 
      data: JSON.stringify(business_data), 
      contentType : "application/json", 
      beforeSend:function(){ 
       showMetronicLoading(el,msgLoading); 
      }, 
      error: function(){ 
       Metronic.unblockUI(el); 
       showMetronicAlert('danger','warning',msgInternetError); 
      }, 
      success: function(){ 
       Metronic.unblockUI(el); 
       //console.log(d); 
       showMetronicAlert('success','check',msgSuccess); 
      } 
     }); 
    }); 

Hier ist der Code im Frühjahr Controller,

@RequestMapping("/ssuForm/create") 
@ResponseStatus(HttpStatus.OK) 
@ResponseBody 
public UmkeiBusinessInfo createSsuForm(@RequestBody UmkeiBusinessInfo umkeiSsu) { 

    UmkeiBusinessInfo createSsuForm = umkeiBusinessInfoService.create(umkeiSsu); 

    return createSsuForm; 
} 

Allerdings gibt es einige andere Felder in der Form sind, die zu anderen Tabellen geschoben erforderlich werden, die auf den Primärschlüssel dieser Haupttabelle verknüpft (Business Info PK -> Spalte UBI_ID)

Eine andere Tabelle heißt Nature_Business mit der Spalte Business_Id, die als Fremdschlüssel für die Spalte Business_info-Tabelle (Ubi_id) fungiert.

Wie bekomme ich den Wert des eingefügten Primärschlüssels, und habe es an diese andere Tabelle geschoben? Hier

ist, was ich in Spring-Controller versucht (durch eine andere Aktion erstellen)

@RequestMapping("/info/businessId/{ubiId}") 
@ResponseStatus(HttpStatus.OK) 
@ResponseBody 
public String infoBusinessId(@PathVariable("ubiId") String q) throws SQLException { 
    UmkeiBusinessInfo businessInfo = umkeiBusinessInfoService.findById(q); 
    UmkeiBusinessInfo businessId = umkeiBusinessInfoService.findById(businessInfo.getUbiId()); 

     JSONObject o = new JSONObject(); 
     o.put("id", businessId.getUbiId()); 

    return o.toJSONString(); 
} 

Da ist in meinem JS-Datei (die nicht funktioniert, ich habe 404 in der Konsole des Browsers

$.ajax({ 
      url: 'home/umkei/info/businessId/'+ ubiId //(I think it has something to with this one??) I dont know what to insert here, 
      dataType: 'json', 
      beforeSend:function(){ 
       showMetronicLoading(el,msgLoading); 
      }, 
      error: function(){ 
       Metronic.unblockUI(el); 
       showMetronicAlert('danger','warning',msgInternetError + '. Failed to load business ID'); 
      }, 
      success: function(){ 
       Metronic.unblockUI(el); 
      } 
     }); 

Unten ist die eine, die ich

var nature = { 
      ubtBusinessInfo: //here is where I need to insert the new id inserted from the above code, 
      ubtBusinessListing: //here is the value which is selected by the user 
    }; 

     //console.log(nature); 

$.ajax({ 
    type: "post", 
    url: 'home/umkei/ssuForm/create/nature', 
    data: JSON.stringify(nature), 
    contentType : "application/json", 
    beforeSend:function(){ 
     showMetronicLoading(el,msgLoading); 
    }, 
    error: function(){ 
     Metronic.unblockUI(el); 
     showMetronicAlert('danger','warning',msgInternetError); 
    }, 
    success: function(d){ 
     Metronic.unblockUI(el); 
     showMetronicAlert('success','check',msgSuccess); 
    } 
}); 

Oder manche ist es mein Ansatz ist falsch? Bitte einfügen bin versucht, man erleuchte mich. Vielen Dank.

Antwort

0

Sie haben vergessen, ein "," und das Ende Ihres Ajax Anrufs hinzuzufügen.

$.ajax({ 
     url: 'home/umkei/info/businessId/'+ ubiId //(I think it has something to with this one??) I dont know what to insert here, 
     dataType: 'json', 
     beforeSend:function(){ 
      showMetronicLoading(el,msgLoading); 
     }, 

Versuchen Sie, das "," am Ende hinzuzufügen. Lassen Sie mich wissen, wenn immer noch 404

url: 'home/umkei/info/businessId/'+ ubiId, //comments 
+0

Es ist in meinem Code. Es ist nur auf der Rückseite meines kommentierten Codes oben, weil ich nicht sicher bin, ob es korrekt ist oder nicht. – Luqman

+0

Nein, wenn Sie hinzufügen, am Ende wird ignoriert, wie in der Antwort angegeben. url: 'home/umkei/info/businessId /' + ubiId, // Kommentare – cralfaro

+0

Ich habe. Der Kommentar befindet sich nicht im aktuellen Code. Es ist genau so, wie du es gesagt hast. Ich habe gerade den Kommentar in der SO hinzugefügt, weil ich Hilfe brauche, um den UbiId-Wert zu erhalten. – Luqman

Verwandte Themen