2016-12-30 27 views
0

我有以下JSON對象:不能多JSON對象傳遞給阿賈克斯查詢

var algo, encrypt, nameOfRecord, configOutput = new Object(); 

algo = JSON.parse('{"algorithm" :"'+response.fieldConfigProperties.algorithmNames+'"}'); 
encrypt = JSON.parse('{"encryptionLevel" :"'+response.fieldConfigProperties.encryptionLevels+'"}'); 
nameOfRecord = JSON.parse('{"recordName" :"'+recordName+'"}'); 
configOutput = JSON.parse('{"outputConfiguration" :"'+outputConfiguration+'"}'); 

我如何通過所有的人一下子我的AJAX jQuery的?

這是我的jQuery

$.ajax({ 
     headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' }, 
     url:"/FeildConfigurationServlet", 
     method:"POST", 
     data: //WHAT SHOULD I PASS HERE 
     dataType:"json", 

     success:function(response){ 
          console.log(JSON.stringify(response)); 
          console.log('success /FeildConfigurationServlet') 

         } }) 

任何幫助表示讚賞。謝謝:)

編輯:

這是其餘的服務,我要打電話:

@RequestMapping(value = "/FeildConfigurationServlet", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
// writes a new field config details or update an already existing field 
// configuration 
protected @ResponseBody String feildConfigurationServlet(@RequestBody FieldConfigurationData fcd) { 

    String algorithm = fcd.getAlgorithm(); 
    String encryptionLevel = fcd.getEncryptionLevel(); 
    String fieldValueToBeConfigured = fcd.getFieldValueToBeConfigured(); 
    String recordName = fcd.getRecordName(); 
    String outputConfiguration = fcd.getOutputConfiguration(); 



    String fileNameBigDataXML = CommonUtils.getConfigFolderPath() 
      + "\\Config-XML\\tap-dap-anonymizer-configuration.xml"; 
    String dataReadFieldOutputConfig = null; 
    String dataReadRecordStructure = null; 
    try { 
     dataReadFieldOutputConfig = readDataFromFile(
       CommonUtils.getConfigFolderPath() + "\\Config-XML\\field_output_config.xml"); 
     dataReadRecordStructure = readDataFromFile(
       CommonUtils.getConfigFolderPath() + "\\Config-XML\\record_structure.xml"); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    // read data from bigdata XML and from fieldconfig XML 
    String dataRead = null; 
    try { 
     dataRead = readDataFromFile(fileNameBigDataXML); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    // to append record sturcture(to get output under that fieldname) 
    dataRead = appendRecordStructureForRecordType(dataRead, dataReadRecordStructure, recordName, 
      fieldValueToBeConfigured); 
    // manipulations for the data 
    String finalDataForFieldOutputConfig = generateGenericFieldConfigStructure(dataReadFieldOutputConfig, 
      fieldValueToBeConfigured, outputConfiguration, algorithm, encryptionLevel); 
    // manipulated data whether to add or to update 
    try { 
     addOrUpdateFieldConfig(dataRead, fieldValueToBeConfigured, finalDataForFieldOutputConfig, 
       fileNameBigDataXML, recordName); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    // sending response 
    JsonObject jsonObject = new JsonObject(); 
    jsonObject.addProperty("success", true); 
    return jsonObject.toString(); 
} 

public static String appendRecordStructureForRecordType(String dataRead, String dataReadRecordStructure, 
     String recordName, String fieldValueToBeConfigured) { 

    dataReadRecordStructure = dataReadRecordStructure.replaceFirst("<dap-property-value></dap-property-value>", 
      "<dap-property-value>" + fieldValueToBeConfigured + "_hash</dap-property-value>"); 
    String firstpart = dataRead.substring(0, dataRead.indexOf("<record-name>" + recordName + "</record-name>")); 
    String lastPart = dataRead.substring(dataRead.indexOf("<record-name>" + recordName + "</record-name>")); 
    String changeToAppend = lastPart.substring(0, lastPart.indexOf("</record-structure>")) + dataReadRecordStructure 
      + lastPart.substring(lastPart.indexOf("</record-structure>")); 
    String finaldataRead = firstpart + changeToAppend; 
    return finaldataRead; 

} 

public static String generateGenericFieldConfigStructure(String dataReadFieldOutputConfig, 
     String fieldValueToBeConfigured, String outputConfiguration, String algorithm, String encryptionLevel) { 

    dataReadFieldOutputConfig = dataReadFieldOutputConfig.replaceFirst("<field-reference></field-reference>", 
      "<field-reference>" + fieldValueToBeConfigured + "</field-reference>"); 
    dataReadFieldOutputConfig = dataReadFieldOutputConfig.replaceFirst(
      "<drop-original-field></drop-original-field>", 
      "<drop-original-field>" + outputConfiguration + "</drop-original-field>"); 
    dataReadFieldOutputConfig = dataReadFieldOutputConfig.replaceFirst("<algorithm></algorithm>", 
      "<algorithm>" + algorithm + "</algorithm>"); 

    dataReadFieldOutputConfig = dataReadFieldOutputConfig.replaceFirst(
      "<field-operation-name></field-operation-name>", 
      "<field-operation-name>" + fieldValueToBeConfigured + "_hash</field-operation-name>"); 
    String firstData = dataReadFieldOutputConfig 
      .substring(dataReadFieldOutputConfig.lastIndexOf("<operation-configuration>")); 
    String data = dataReadFieldOutputConfig.substring(0, 
      dataReadFieldOutputConfig.lastIndexOf("<operation-configuration>") - 1); 
    firstData = firstData.replace("<algorithm></algorithm>", "<algorithm>" + encryptionLevel + "</algorithm>"); 
    dataReadFieldOutputConfig = data + firstData; 
    return dataReadFieldOutputConfig; 
} 

public static void addOrUpdateFieldConfig(String dataRead, String fieldValueToBeConfigured, 
     String finalDataForFieldOutputConfig, String fileNameBigDataXML, String recordName) throws IOException { 
    if (dataRead.contains("<field-reference>" + fieldValueToBeConfigured + "</field-reference>")) { 
     // to be updated 
     int fieldReferenceIndex = dataRead 
       .indexOf("<field-reference>" + fieldValueToBeConfigured + "</field-reference>"); 
     String firstPartdataRead = dataRead.substring(0, fieldReferenceIndex); 
     String remainingPartdataread = dataRead.substring(fieldReferenceIndex - 1); 
     // to be appended to remaining part 
     String inbet = StringUtils.substringBetween(finalDataForFieldOutputConfig, "<field-operations>", 
       "</field-operations>"); 
     // first and last index of field <field-operations> 
     remainingPartdataread = remainingPartdataread.substring(0, 
       remainingPartdataread.indexOf("<field-operations>")) + "<field-operations>" + inbet 
       + remainingPartdataread.substring(remainingPartdataread.indexOf("</field-operations>")); 
     dataRead = firstPartdataRead + remainingPartdataread; 
     writeToFile(dataRead, fileNameBigDataXML); 
     logger.debug("This is updating field config details : " + "writing field data to file : " + dataRead); 
    } else { 
     // for a new field config 
     int recordReferenceIndex = dataRead.indexOf("<record-reference>" + recordName + "</record-reference>"); 
     String firstPartdataRead = dataRead.substring(0, recordReferenceIndex); 
     String remainingPartdataread = dataRead.substring(recordReferenceIndex - 1); 
     String LastPartBigData = remainingPartdataread.substring(0, 
       remainingPartdataread.indexOf("</record-anonymizer-configuration>")) + finalDataForFieldOutputConfig 
       + remainingPartdataread 
         .substring(remainingPartdataread.indexOf("</record-anonymizer-configuration>") - 1); 
     dataRead = firstPartdataRead + LastPartBigData; 
     writeToFile(dataRead, fileNameBigDataXML); 
     logger.debug("This is writing new field config details : " + "writing field data to file : " + dataRead); 
    } 
} 

我要所有的對象傳遞給此服務。我怎麼做?

更新: 我忘了補充這類

package com.entity; 

public class FieldConfigurationData { 

private String algorithm; 
private String encryptionLevel; 
private String fieldValueToBeConfigured; 
private String recordName; 
private String outputConfiguration; 

public String getAlgorithm() { 
    return algorithm; 
} 

public void setAlgorithm(String algorithm) { 
    this.algorithm = algorithm; 
} 

public String getEncryptionLevel() { 
    return encryptionLevel; 
} 

public void setEncryptionLevel(String encryptionLevel) { 
    this.encryptionLevel = encryptionLevel; 
} 

public String getFieldValueToBeConfigured() { 
    return fieldValueToBeConfigured; 
} 

public void setFieldValueToBeConfigured(String fieldValueToBeConfigured) { 
    this.fieldValueToBeConfigured = fieldValueToBeConfigured; 
} 

public String getRecordName() { 
    return recordName; 
} 

public void setRecordName(String recordName) { 
    this.recordName = recordName; 
} 

public String getOutputConfiguration() { 
    return outputConfiguration; 
} 

public void setOutputConfiguration(String outputConfiguration) { 
    this.outputConfiguration = outputConfiguration; 
} 

@Override 
public String toString() { 
    return "FeildConfigurationData [algorithm=" + algorithm + ", encryptionLevel=" + encryptionLevel 
      + ", fieldValueToBeConfigured=" + fieldValueToBeConfigured + ", recordName=" + recordName 
      + ", outputConfiguration=" + outputConfiguration + "]"; 
} 

} 
+0

我不知道,如果你想在發送請求JSON或您只是認爲JSON是在請求中發送的。你如何解析servlet上的數據? – Musa

+0

我只想將它作爲JSON發送.. servlet將數據保存爲JSON的其他文件。 – Arry

+0

您對'FieldConfigurationData'的定義缺失,您也沒有在請求中發送'fieldValueToBeConfigured'。 – Musa

回答

2

您可以創建包含JSON對象中的數據

$.ajax({ 
      headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' }, 
      url:"/FeildConfigurationServlet", 
      method:"POST", 
      data: { 
      algo:algo, 
      encrypt:encrypt, 
      nameOfRecord:nameOfRecord, 
      configOutput:configOutput 
      }, 
      dataType:"json", 

      success:function(response){ 
           console.log(JSON.stringify(response)); 
           console.log('success /FeildConfigurationServlet') 

          } }) 
+0

數據是一個單一的對象。但是,您可以在對象內傳遞多個對象,所以。瞧! –

+0

@Vladu約努茨其實我想送的值是這樣 – Arry

+0

{ \t 「算法」: 「HmacSHA256」, \t 「encryptionLevel」: 「RSA」, \t 「fieldValueToBeConfigured」: 「手機」, \t「 recordName「:」CRM1「, \t」outputConfiguration「:」YES「 } 這對郵遞員很好。我不希望它被硬編碼,因爲它可能會改變 – Arry

0

您可以到數據的多個屬性添加一個新的對象,因爲你可以閱讀here。所以,你可以簡單地使用data: {"algo": algo, "encrypt": encrypt ...}

+0

我得到這個「無法讀取文件:無法識別的令牌'算法:期待('真','虛假'或'空')錯誤 – Arry

+0

當你有這個錯誤時,你可以發佈你確切的代碼嗎?只需更新您的問題。在此先感謝 – Andy

+0

,做你在控制檯這個錯誤?你能告訴我們錯誤發生在哪一行嗎?你可以看到這就是在Chrome的開發者控制檯 – Andy

0
 var algo, encrypt, nameOfRecord, configOutput = new Object(); 
    var Obj = new Object(); 
    algo = JSON.parse('{"algorithm" :"'+response.fieldConfigProperties.algorithmNames+'"}'); 
    encrypt = JSON.parse('{"encryptionLevel" :"'+response.fieldConfigProperties.encryptionLevels+'"}'); 
    nameOfRecord = JSON.parse('{"recordName" :"'+recordName+'"}'); 
    configOutput = JSON.parse('{"outputConfiguration" :"'+outputConfiguration+'"}'); 

    Obj = {algo, encrypt, nameOfRecord, configOutput} 

希望這有助於...

0

都不要用手建立JSON的第一,尤其是如果你打算把它解析爲一個對象呢。

var data = { 
    algorithm :response.fieldConfigProperties.algorithmNames, 
    encryptionLevel: response.fieldConfigProperties.encryptionLevels, 
    recordName: recordName, 
    outputConfiguration: outputConfiguration, 
    fieldValueToBeConfigured: 'some value' 
}; 

當發送JSON你應該將內容類型設置爲application/JSON,並通過你的js數據作爲JSON

$.ajax({ 
    url:"/FeildConfigurationServlet", 
    method:"POST", 
    data: JSON.stringify(data), 
    contentType: 'application/json', 
    dataType:"json", 

    success:function(response){ 
     console.log(JSON.stringify(response)); 
     console.log('success /FeildConfigurationServlet') 

    } 
}); 
+0

我想這method..but我得到 「無法讀取文件:無法反序列化java.lang.String中的實例進行START_ARRAY令牌 – Arry

+0

井沒有我們辦不到您的服務器端代碼真正幫助我增加了我要調用REST服務代碼進行任何更 – Musa

+0

,請看看。 – Arry