в методе pickContacts
, измените его, чтобы получить Contacts._ID
, он случайно находит идентификатор, потому что оба RawContacts._ID
и Contacts._ID
являются строкой «_id», но это просто неправильно. ]
Затем, поскольку вы на самом деле захватываете идентификатор контакта, вам нужно изменить getContactDetails
, чтобы он принимал ContactId
, а не RawContactId
.
Не уверен, почему вам нужно задействовать Entity
API-интерфейсов подобным образом, если вам нужно только запросить данные этого контакта, сделайте следующее:
private void getContactDetails (long contactId) {
Log.i("Contacts", "Get contact with id " + contactId);
String[] projection = new String[]{Data.DISPLAY_NAME, Data.MIMETYPE, Data.DATA1};
String selection = Data.CONTACT_ID + "=" + contactId;
Cursor c = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null);
if (c == null) {
return;
}
try {
while (c.moveToNext()) {
String name = c.getString(0);
String mimeType = c.getString(1);
String data = c.getString(2);
Log.i("Contacts", contactId + ", " + name + ", " + mimetype + ", " + data);
}
} finally {
c.close();
}
}
Начиная с jQuery 1.5 вы можете использовать механизм отложенных объектов:
$.post('some.php', {name: 'John'})
.done(function(msg){ })
.fail(function(xhr, status, error) {
// error handling
});
Другой способ - использовать .ajax
:
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("some error");
}
});
Необходимо зарегистрировать responseText:
$.ajax({
type: 'POST',
url: 'status.ajax.php',
data: {
deviceId: id
}
})
.done(
function (data) {
//your code
}
)
.fail(function (data) {
console.log( "Ajax failed: " + data['responseText'] );
})
$.ajax({
type: 'POST',
url: 'status.ajax.php',
data: {
deviceId: id
},
success: function(data){
// your code from above
},
error: function(xhr, textStatus, error){
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
Простой способ - реализовать ajaxError :
Каждый раз, когда запрос Ajax завершает с ошибкой, jQuery запускает событие ajaxError. Все без исключения обработчики , которые были зарегистрированы с помощью метода .ajaxError (), в этот раз выполняются в .
Например:
$('.log').ajaxError(function() {
$(this).text('Triggered ajaxError handler.');
});
Я бы посоветовал прочитать документацию ajaxError . Он делает больше, чем простой пример использования, продемонстрированный выше - в основном его обратный вызов принимает ряд параметров:
$('.log').ajaxError(function(e, xhr, settings, exception) {
if (settings.url == 'ajax/missing.html') {
$(this).text('Triggered ajaxError handler.');
}
});