2010-09-08 3 views
1

Я пытаюсь загрузить форму в диалоговом окне jquery через ajax, и я заметил, что по какой-то причине в firebug URL-адрес запроса содержит параметр подделки soem..like .._ = 1283928792723, что вызывает запрос потерпеть неудачу с 406 недопустимыми.jquery dialog ajax load

Интересно, что этого не происходит с другими маршрутами, такими как edit_user_path (current_user), но это происходит с новыми и редактируемыми действиями. странно

http://localhost:3000/users/96/posts/new?_=1283928792723&name=fake 

var dialogOpts = { 
     modal: true, 
     bgiframe: true, 
     autoOpen: false, 
     height: 500, 
     width: 500, 
     draggable: true, 
     resizeable: true 
    }; 

    $("#new_vt").dialog(dialogOpts); //end dialog 

    $('#showdialog').click(function() { 
     $('#new_vt').load(
     "<%= new_user_post_path(current_user)%>", 
     "name=fake", 
     function() { 
     $('#new_vt').dialog('open'); 
     } 
    ); 
     return false; 
    }); 


<a href="#" class="" id="showdialog"> 
    Show 
</a> 
<div class="" id="new_vt"> 

</div> 

ответ

0

В вашем примере, это выглядит как URI генерируется на стороне сервера, т.е.

new_user_post_path(current_user) 

Чтобы проверить это, попробуйте положить в жестко закодированы URI и подбежать сценарий.

Если вы это сделаете, и проблема исчезнет, ​​проблема на самом деле связана с вашей серверной функцией, а не с jQuery.

Если у вас есть проблемы, вы можете попробовать передавая данные, как это:

$('#showdialog').click(function() { 
    $('#new_vt').load(
     "<%= new_user_post_path(current_user)%>", 
     { name: "fake" }, 
     function() { 
      $('#new_vt').dialog('open'); 
     } 
    ); 
    return false; 
}); 

Это как дополнительные данные передаются в примере документации.

http://api.jquery.com/load/

+0

Аргументы передаются в буквальной нотации javascript, поэтому это должно быть 'name:" fake "' (no equals sign) – leepowers

+0

Хорошо, я пробовал жестко закодированный URL-адрес. Я также попытался изменить формат данных на {name: 'fake'}, {name: fake}, '', [], но все это не работает. Мне нужно передать данные как не-объект, потому что функция приняла запрос POST, если данные являются объектом, I infact даже не нужно передавать какие-либо данные. имя = подделка - это просто тест. что делать сейчас? – badnaam

+0

@ pygorex1 - Совершенно верно. Пример скорректирован. – Fenton

0

Оказывается, что new_user_post_path(current_user) возвращается на URL с произвольным числом присоединенного в строке запроса, чтобы предотвратить кэширование запросов. Осмотрите функцию new_user_post_path и посмотрите, действительно ли это так.

+0

Нет, я действительно поставил этот url в поле предупреждения, чтобы убедиться, что это так. Это не. Это простой usr, такой как/users/2/posts/new – badnaam