I need to call a Web Service from a Ajax in my entity form and i need to put the return data in some fields, but i got an error: "Error: Operation aborted\r\n"
I got the error at this line:
error: function (jqXHR, textStatus, errorThrown) {
failureCallback(new Error(errorThrown));
},
The ALL code is:
/// <reference path="jquery-1.6.1.min.js" />
var AddressService = {
_bindings: {},
addressFieldNames: null,
setFieldNames: function (arg) {
var name = "name";
var line1 = "line1";
var line2 = "line2";
var line3 = "line3";
var postalCode = "postalcode";
var city = "city";
var state = "stateorprovince";
var country = "country";
var prefix;
if (typeof (arg) === "string") {
prefix = arg;
}
else {
var context = arg;
var sourceFieldName = context.getEventSource().getName();
var index = sourceFieldName.lastIndexOf("_");
if (index > -1) {
prefix = sourceFieldName.substring(0, index + 1);
}
else {
prefix = "";
}
}
AddressService.addressFieldNames = {
name: prefix + name,
line1: prefix + line1,
line2: prefix + line2,
line3: prefix + line3,
postalCode: prefix + postalCode,
city: prefix + city,
state: prefix + state,
country: prefix + country
};
if (!AddressService._bindings[prefix]) {
AddressService._bindings[prefix] = AddressService.addressFieldNames;
}
},
getAddressByPostalCode: function (postalCode, successCallback, failureCallback) {
try {
//localhost:51940/WebService.asmx/
var url = "myUrlHere" + postalCode;
var jqxhr = $.ajax({
url: url,
dataType: "jsonp",
data: null,
success: function (data, textStatus, jqXHR) {
var address;
if (data && data.GetCepResult) {
var result = data.GetCepResult;
address = {
line1: result.TipoLogradouro.Text != "Outros" ? result.TipoLogradouro.Text + " " + result.Logradouro : result.Logradouro,
line3: result.Bairro,
postalCode: result.CEP,
city: result.Cidade,
state: result.Estado,
country: "Brasil"
};
}
else {
address = null;
}
successCallback(address);
},
error: function (jqXHR, textStatus, errorThrown) {
failureCallback(new Error(errorThrown));
},
crossDomain: true
});
}
catch (error) {
failureCallback(error);
}
},
setAddressFields: function (address) {
if (!address) {
var clearAddressMessage = "Não foi encontrado nenhum endereço brasileiro com o CEP informado. Deseja limpar o formulário de endereço?\n\n";
clearAddressMessage += "Para manter o que foi digitado, clique em Cancelar.\n";
clearAddressMessage += "Para limpar o formulário de endereço, clique em OK.";
if (!confirm(clearAddressMessage)) {
return;
}
}
var line1 = address ? address.line1 : null;
//var line2 = address ? address.line2 : null;
var line3 = address ? address.line3 : null;
var city = address ? address.city : null;
var state = address ? address.state : null;
var country = address ? address.country : null;
var fields = AddressService.addressFieldNames;
Xrm.Page.data.entity.attributes.get(fields.line1).setValue(line1);
//Xrm.Page.data.entity.attributes.get(fields.line2).setValue(line2);
Xrm.Page.data.entity.attributes.get(fields.line3).setValue(line3);
if (address) {
Xrm.Page.data.entity.attributes.get(fields.postalCode).setValue(address.postalCode);
}
Xrm.Page.data.entity.attributes.get(fields.city).setValue(city);
Xrm.Page.data.entity.attributes.get(fields.state).setValue(state);
Xrm.Page.data.entity.attributes.get(fields.country).setValue(country);
},
postalCodeOnChange: function (context) {
AddressService.setFieldNames(context);
var fields = AddressService.addressFieldNames;
var postalCodeField = Xrm.Page.data.entity.attributes.get(fields.postalCode);
var postalCode = postalCodeField.getValue();
if (postalCode) {
AddressService.getAddressByPostalCode(
postalCode,
function (address) {
AddressService.setAddressFields(address);
},
function (error) {
alert("Ocorreu um erro ao pesquisar o endereço com CEP: " + postalCode + ".");
AddressService.setAddressFields(null);
}
);
}
else {
AddressService.setAddressFields(null);
}
},
formOnLoad: function (context) {
var prefixes = ["address1_", "address2_", "", "billto_", "shipto_", "gdb2_endereco_"];
for (var i = 0; i < prefixes.length; i++) {
var prefix = prefixes[i];
var testField = Xrm.Page.getAttribute(prefix + "line1");
if (testField) {
AddressService.setFieldNames(prefix);
}
}
},
formOnSave: function (context) {
for (var k in AddressService._bindings) {
var fields = AddressService._bindings[k];
var addressName;
var line1 = Xrm.Page.data.entity.attributes.get(fields.line1).getValue();
if (line1) {
addressName = line1;
var line2 = Xrm.Page.data.entity.attributes.get(fields.line2).getValue();
addressName += line2 ? ", " + line2 : "";
var line3 = Xrm.Page.data.entity.attributes.get(fields.line3).getValue();
addressName += line3 ? " - " + line3 : "";
var postalCode = Xrm.Page.data.entity.attributes.get(fields.postalCode).getValue();
addressName += postalCode ? " - " + postalCode : "";
var city = Xrm.Page.data.entity.attributes.get(fields.city).getValue();
addressName += city ? " - " + city : "";
var state = Xrm.Page.data.entity.attributes.get(fields.state).getValue();
addressName += state ? " - " + state : "";
var country = Xrm.Page.data.entity.attributes.get(fields.country).getValue();
addressName += country ? " - " + country : "";
}
else {
addressName = null;
}
var nameField = Xrm.Page.data.entity.attributes.get(fields.name);
nameField.setValue(addressName);
}
}
};