2010-08-26 3 views
2

Обычно я использую ASP.NET MVC 2, но были проблемы с ним, поэтому я начал работать с ASP.NET MVC 2 + jQuery, и все работает. Но есть одна проблема, jQuery не загружает мой ответ. На стороне ASP.NET MVC я отменяю частичное представление, и я также получаю ответ на клиенте, но ничего не отображается. Как я могу это решить?jQuery не загружает ответ

Вот код JQuery:

function addCredential(state, id) { 
var daten = getJson(state, id); 
$.ajax(
    { 
     type: "POST", 
     url: "/Account/SetCredential/", 
     data: daten, 
     dataType: "json", 
     success: function(partialView) { 
      $('#Credentials').replaceWith(partialView); 
      location.reload(); 
     } 
    }); 
    return true; 
}; 

function getJson(state,id) { 
    var username = $('#username').val(); 
    return {"username": username, "credential_id": id , "state": state }; 
}; 
+3

Для чего нужен запрос 'location.reload()'? Это обновит страницу :) –

+0

это была просто попытка thx для комментария – Konrad

ответ

3

Проблема выглядит location.reload();

Вот перезагрузки страницы после обновления его с помощью AJAX, эффективно возвращая его состояние обратно к тому, как это было до того вы вставили содержимое с помощью .replaceWith()

UPDATE: похоже, вы используете dataType: "json" и вставляете его в DOM? Вероятно, это тоже проблема. Если представление возвращается как HTML, вы должны его заменить dataType: "html"

+0

моя проблема в том, что ничего не обновить страницу ... если я перезагрузите страницу (с помощью кнопки f5), то я все в корне, но jquery dosen't я должен попробовать более старую версию jquery? – Konrad

+0

Может быть несколько причин, по которым ваш код ведет себя неожиданно. У вас есть Firebug для FireFox? Если это так, избавьтесь от 'location.reload()' и проверьте консоль на) ошибки javascript или b) проблему с ответом с сервера. Вы могли бы также изучить методы jQuery '.append()' или '.appendTo()' вместо 'replaceWith()', хотя я бы попытался это сделать в крайнем случае, так как проблема наиболее вероятна в другом месте. – Stephen

+0

Использование 'location.reload()' всегда даст вам противоположность тому, чего вы пытаетесь достичь, поэтому обязательно удалите его. – Stephen

1

@ Konrad, попробуйте использовать библиотеку JSON2 (http://www.json.org/js.html), чтобы предупредить объект partialView в вашей функции успеха, чтобы узнать, что вы получаете до перезагрузка страницы. Кроме того, убедитесь, что $ ('# Credentials') возвращает объект. Когда я сталкиваюсь с проблемами при попытке выбора элементов на странице, я обычно проверяю значение длины возвращаемого объекта jQuery. Если length = 0, то вы не получаете элемент.

UPDATE: Кроме того, если вы пытаетесь ввести HTML в $ ('# Credentials'), то partialView может быть неправильным. Функция успеха принимает аргумент объекта, который исходит от разбора ответного текста веб-метода, который вы вызывали, чтобы получить то, что вы называете partialView.

ОБНОВЛЕНИЕ: Проверьте http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/ для получения дополнительной информации, используя $ .ajax. Много интересной информации в этом блоге.

UPDATE: Вот как я использую JSON lib для просмотра возвращаемых данных. alert (JSON.stringify (partialView));

+0

Thx для вашей помощи проблема dataType. – Konrad

Смежные вопросы