Динамическое создание URL в JavaScript на основе ввода пользователя - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь создать URL-адрес динамически на основе выбора пользователя

, поэтому я написал js следующим образом:

getPatientProfile(patient, relative, relation, contactNumber, townCity) {

    var p = patient.trim()
    var r = relative.trim()

    var url = 'http://192.168.1.3/api/clinic/patient/profile?patient=' + p + '&relative=' + r ;

    if (relation != null || relation != "" || relation != undefined){
        url += "&relationType=" + relation;
    }
    if (contactNumber != null || contactNumber != ""){
        url += "&contactNumber=" + contactNumber;
    }
    if (townCity != null || townCity != ""){
        url += "&townCity=" + townCity;
    }
    return axios.get(url);
}

, но я все еще получаю полный URL-адрес: http://192.168.1.3/api/clinic/patient/profile?patient=vernacular&relative=Dreams&relationType=undefined&contactNumber=&townCity=

что я хочу, если отношение, contactNumber и townCity не указаны пользователем, URL должен быть просто http://192.168.1.3/api/clinic/patient/profile?patient=vernacular&relative=Dreams

Ответы [ 3 ]

0 голосов
/ 30 декабря 2018

когда пользователь не дает никакого значения, это всегда обусловливает истину.townCity! = пусто и отношение! = пусто и contactNumber! = пусто

function getPatientProfile(patient, relative, relation, contactNumber, townCity) 
{

var p = patient.trim()
var r = relative.trim()

var url = 'http://192.168.1.3/api/clinic/patient/profile?patient=' + p + '&relative=' + r ;

if (relation != null && relation != "" && relation != undefined){
    url += "&relationType=" + relation;
}
if (contactNumber != null && contactNumber != ""){
    url += "&contactNumber=" + contactNumber;
}
if (townCity != null && townCity != ""){
    url += "&townCity=" + townCity;
}
return axios.get(url);
}  
0 голосов
/ 30 декабря 2018

вы можете сделать getPatientProfile(patient, relative, relation, contactNumber, townCity) более общим, если вы идете по пути json:

var keys = {
patient : "Thor",
relative : "Loki",
relation : "Brothers",
contactNumber : null,
townCity : ""
};
function getPatientProfile(options){
var url = 'http://192.168.1.3/api/clinic/patient/profile';
  for (key in options){ 
     var separator = url.indexOf('?') !== -1 ? "&" : "?";
     if(!!options[key]){ //checks for the truthy condition of the options[key]
        options[key] = options[key].trim(); //you can also add conditions for the keys which you want to trim.
        url += separator + key + "=" + options[key];
     }
  }
return url;
}

таким образом вы можете легко добавлять / удалять ключи:)

0 голосов
/ 30 декабря 2018

Вам нужно использовать &&, когда вы хотите, чтобы все условия выполнялись.

Или вам даже не нужно проверять всю чистоту значения Falsey

function getPatientProfile(patient, relative, relation, contactNumber, townCity) {

    var p = patient.trim()
    var r = relative.trim()

    var url = 'http://192.168.1.3/api/clinic/patient/profile?patient=' + p + '&relative=' + r ;

    if (relation){
        url += "&relationType=" + relation;
    }
    if (contactNumber){
        url += "&contactNumber=" + contactNumber;
    }
    if (townCity){
        url += "&townCity=" + townCity;
    }
    return url
}

console.log(getPatientProfile('rel','pat'))
...