#jquery #json #jayrock
#jquery #json #jayrock
Вопрос:
Я использовал фреймворк JayRock с ASP.NET чтобы вернуть JSON, который используется через javascript. Все работало нормально, пока я не изменил вызов $.ajax с GET на POST. После этого изменения я теперь получаю эту ошибку.
{"id":null,"error":{"name":"JSONRPCError","message":"Missing value.","errors":[{"name":"JsonException","message":"Missing value."}]}}
Вот мой javascript:
var tmp = '{ "assID": 52 }';
var tmpObj = $.parseJSON(tmp);
$.ajax
({
type: "POST",
url: '/jsonC.ashx/tester',
dataType: 'json',
data: tmpObj,
async: true,
contentType: 'application/json',
success: function (result) {
console.log(JSON.stringify(result));
}
})
У кого-нибудь есть идеи?
Заранее спасибо.
Комментарии:
1. Ожидает ли этот URL получения post? Если это только поиск значений GET, то вам все равно придется передавать параметры в URL.
2. Та же мысль, что и у Marc, но правильнее всего получить параметры на стороне сервера из POST, а не отправлять их избыточно в URL.
3. Я не думаю, что понимаю, я использую Jayrock, я предполагаю, что он обрабатывает разницу для меня? Кажется, я не могу найти никаких настроек.. Я весь день гуглил эту проблему
Ответ №1:
Вот определение того, что следует делать:
var dataString = '{ "assID": 52 }';
var postData = $.parseJSON(dataString);
var response;
$.ajax({
type: 'POST',
url: '/jsonC.ashx/tester',
contentType: 'application/json',
data: JSON.stringify(postData),
dataType: 'json',
success: function(data) {
//do something for success if you want. If your response is JSON:
response = $.parseJSON(data)
},
error: function(data) {
//do somtething for error if you want. If your response is JSON:
response = $.parseJSON(data)
}
});
Комментарии:
1. на самом деле я пытался отправить данные, но упростил код, просто чтобы попытаться получить ответ от post .. вот данные .. var tmp = ‘{ «assID»: 52 }’; var tmpObj = $.parseJSON(tmp); затем в вызове ajax.. data: tmpObj,
2. добиваюсь прогресса … теперь я получаю ошибку сервера, которую я вижу с помощью firebug.. «Уведомления еще не поддерживаются». Проблема с Jayrock?
3. Ваша проблема в том, что:
If the ID is not there or was not set then this is a notification request from the client that does not expect any response. Right now, we don't support this.
отсюда: java2s.com/Open-Source/CSharp/Development/Jayrock/Jayrock /…4. таким образом, это означает, что вы должны установить
id
на что-то. Я имею в виду что-то вроде: var dataString = ‘{ «id»: 1, «assID»: 52 }’;5. О, отлично @kamaci Итак, я включил идентификатор, он жаловался на отсутствие вызова метода, поэтому я включил имя метода .. теперь его сообщение: «Несоответствие количества параметров». … есть ли шанс, что вы знаете синтаксис для включения этого параметра.. все, что я пробовал, потерпело неудачу.. Спасибо!
Ответ №2:
Вам нужно добавить свои параметры в качестве данных в значения конфигурации…
$.ajax
({
type: "POST",
url: '/jsonC.ashx/tester',
dataType: 'json',
data: {id: some_value, other_var: 'some string'}
async: true,
contentType: 'application/json',
success: function (result) {
console.log(JSON.stringify(result));
}
})
просто замените содержимое данных вашими фактическими значениями. В нынешнем виде вы размещаете на странице, но не отправляете переменные post.