Mod_rewrite с помощью jQuery… Почему это не работает?

#jquery #.htaccess #mod-rewrite

#jquery #.htaccess #мод-перезапись

Вопрос:

У меня есть страница, которая использует jQuery для отправки формы и добавления к ней данных обратно. Однако это не работает, когда используется mod_rewrite. Если вы находитесь на странице, подобной этой http://mydomain.com/file.php?string=m5cl , тогда это сработает. Странно.

Вот мой код:

 $(function() {
$('.error').hide();
$('input.text-input').css({backgroundColor:"#FFFFFF"});
$('input.text-input').focus(function(){
$(this).css({backgroundColor:"#FFDDAA"});
  });
  $('input.text-input').blur(function(){
    $(this).css({backgroundColor:"#FFFFFF"});
  });

  $(".button").click(function() {
    // validate and process form
    // first hide any error messages
$('.error').hide();

var message = $("textarea#message").val();
var fullname = $("input#fullname").val();
var ticket_id = $("input#ticket_id").val();
var date = $("input#datee").val();
var picture_url = $("input#picture_url").val();
var userid = $("input#userid").val();
var user_status = $("input#user_status").val();
var sent = $("input#sent").val();

    var dataString = 'message='   message   'amp;user_id='   userid   'amp;user_status='   user_status   'amp;date='   date   'amp;sent='   sent   'amp;ticket_id='   ticket_id;
    //alert (dataString);return false;

    $.ajax({
  type: "POST",
  url: "process.php",
  data: dataString,
  success: function() {

         $(wrapperId).append("<div style='background-color:#dcd9d9;padding:15px;-moz-border-radius:8px;border-radius:8px; border:1px solid #d3d0d0;'><img src='"   $('#picture_url').val()   "' style='float:left;margin-right:15px;margin-top:-3px; border:3px solid #ffffff;' width='39'><div style='font-size:18px;font-family:Helvetica;color:#363636;font-weight:lighter;margin-bottom:2px;'>"   $('#fullname').val()   "</div><div style='font-size:14px;font-family:Helvetica;color:#363636;font-weight:lighter;text-align:justify;'>"   $('#datee').val()   "</div></div><div style='font-size:15px;color:#363636;line-height:18px;margin-top:15px;padding:0px 15px 0px 15px;text-align:justify;margin-bottom: 30px;'>"   $('#message').val()   "</div>");



      }
     });
    return false;
    });
});
runOnLoad(function(){
  $("input#name").select().focus();
});
  

Комментарии:

1. Можете ли вы вставить содержимое вашего файла .htaccess или правила mod_rewrite?

2. Я понял, что натворил… Ссылался на файлы .js вот так «/js/jsfile.js «и при использовании mod_rewrite он неправильно ссылался. Итак, я сослался на это из абсолютного местоположения (или как вы его называете), например » mydomain.com/js/jsfile.js «.

Ответ №1:

Это не ответ на ваш первоначальный вопрос, но это критическое исправление.

Вам не обязательно все это делать:

 var message = $("textarea#message").val();
var fullname = $("input#fullname").val();
var ticket_id = $("input#ticket_id").val();
var date = $("input#datee").val();
var picture_url = $("input#picture_url").val();
var userid = $("input#userid").val();
var user_status = $("input#user_status").val();
var sent = $("input#sent").val();

    var dataString = 'message='   message   'amp;user_id='   userid   'amp;user_status='   user_status   'amp;date='   date   'amp;sent='   sent   'amp;ticket_id='   ticket_id;
    //alert (dataString);return false;

    $.ajax({
  type: "POST",
  url: "process.php",
  data: dataString,
  success: function() {
  

Если все эти элементы находятся в <form> элементе и каждый из этих элементов имеет name= атрибут, идентичный имени переменной (поэтому он передается в скрипт должным образом), вы можете сконденсировать все это в это (да, действительно):

 $.ajax({
      type: "POST",
      url: "process.php",
      data: $('#yourFormId').serialize(),
      success: function() {
  

Кроме того, поскольку вы не очищаете значения, если я помещу пробел в одно из этих полей ввода, ваш запрос POST завершится, поскольку строка запроса будет недействительной.

Комментарии:

1. Я понял, что когда вы вставите туда пробел, это удалит их. Большое спасибо — это сработало как по волшебству!

2. Правда? Это удобно. Спасибо за информацию!

Ответ №2:

Вы пробовали это?

  var dataString = 
{
  'message': message, 
  'user_id': userid, 
  'user_status': user_status, 
  'date': date,
  'sent':sent,
  'ticket_id': ticket_id
}