我想创建md5变量并使用它来散列唯一的表单值并发送到API以获取唯一数据,但每次我提交数据时md5值都是相同的。
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, Platform } from 'ionic-angular';
import { ModalController, ViewController } from 'ionic-angular';
import { NgForm } from '@angular/forms';
import { Md5 } from 'ts-md5/dist/md5';
import { Geolocation } from '@ionic-native/geolocation';
@IonicPage()
@Component({
selector: 'page-bol',
templateUrl: 'bol.html',
})
export class BolPage {
private chemInfo:any[] = [];
private submitAllData:any[] = [];
private lonlat:any = [];
private md5Data:any;
constructor(public navCtrl: NavController,
public navParams: NavParams,
public modalCtrl: ModalController,
private geolocation: Geolocation
private platform: Platform) {
}
ionViewDidLoad() {
/* Ensure the platform is ready */
this.platform.ready().then(() => {
/* Perform initial geolocation */
this.geolocation.getCurrentPosition().then((resp) => {
this.lonlat = [resp.coords.latitude,resp.coords.longitude];
console.log(this.lonlat);
}).catch((error) => {
console.log('Error getting location', error);
});
});
}
submitBOL(form: NgForm){
//console.log(form.value);
var md5 = new Md5();
this.submitAllData.push(form.value,{'sub':this.chemInfo},
{'gpsLoc':this.lonlat.toString()});
//In theory this value should be unique every time
this.md5Data = md5.appendStr(form.value.toString()).appendStr(this.chemInfo.toString()).appendStr(this.lonlat.toString()).end();
this.submitAllData.push({'md5':this.md5Data});
console.log(this.submitAllData);
}
我一直从控制台获取此值: {“md5”:“703137aef9805f0ca95b8c8b56619f84”}我不确定为什么每次都是相同的值。我对Ionic中的这个功能不太熟悉,所以任何反馈都有帮助。谢谢!
答案 0 :(得分:0)
我相信我找到了答案。显然我的本地机器上的东西导致哈希打印出相同的md5字符串,但我继续在我的Android设备上测试它,它工作正常! 我知道一个事实是非常罕见的数据将是相同的,更不用说gps的位置。所以我在设备上多次测试,每次都给我一个独特的哈希值!
编辑:我也改变了一些代码,这似乎是个问题。
(JSON.stringify(form.value)).appendStr(JSON.stringify(this.chemInfo))
我试图使用.toString()而不是返回对象而不是字符串的JSON.stringify来将数组转换为字符串。