2012-01-27 3 views
0

Используется этот сценарий много раз, чтобы передать 1 или 2 значения в файл PHP, работает фантастически. Используя его теперь, чтобы передать 7 значений, и только первые 2 пройдут.Данные формы для PHP через AJAX

$(document).ready(function(){ 
$("form#send_note").submit(function() { 
var to_user = $('#to_user').attr('value'); 
var from_user = $('#from_user').attr('value'); 
var defaultpic_from = $('#defaultpic_from').attr('value'); 
var defaultpic_to = $('#defaultpic_to').attr('value'); 
var your_username = $('#your_username').attr('value'); 
var message_title = $('#message_title').attr('value'); 
var message_contents = $('#message_contents').attr('value'); 
    $.ajax({ 
     type: "POST", 
     url: "../inbox/send_note.php", 
     data: "to_user="+ to_user +"& from_user="+ from_user + "& defaultpic_from="+ defaultpic_from + "& defaultpic_to="+ defaultpic_to + "& your_username="+ your_username + "& message_title="+ message_title + "& message_contents=" + message_contents, 
     success: function(){ 
      $('form#send_note').hide(function(){$('div.success2').fadeIn();}); 

     } 
    }); 
return false; 
}); 
}); 

Я проверил все имена, все в порядке, это только значения после from_user (defaultpic_from) и так далее не будет проходить. Я верю, что у меня есть данные «данные:». Я полный новичок, когда дело доходит до javascript, поэтому любые советы о том, как это сделать, будут фантастическими!

ответ

0

Держу пари, что значение вашего pic по умолчанию завершает строку запроса. Вы можете обернуть ВАР так, чтобы гарантировать, что они должным образом спаслись:

$(document).ready(function(){ 
    $("form#send_note").submit(function() { 
    var to_user = encodeURIComponent($('#to_user').attr('value')); 
    var from_user = encodeURIComponent($('#from_user').attr('value')); 
    var defaultpic_from = encodeURIComponent($('#defaultpic_from').attr('value')); 
    var defaultpic_to = encodeURIComponent($('#defaultpic_to').attr('value')); 
    var your_username = encodeURIComponent($('#your_username').attr('value')); 
    var message_title = encodeURIComponent($('#message_title').attr('value')); 
    var message_contents = encodeURIComponent($('#message_contents').attr('value')); 
     $.ajax({ 
      type: "POST", 
      url: "../inbox/send_note.php", 
      data: {to_user:to_user, from_user:from_user, defaultpic_from: defaultpic_from, defaultpic_to:defaultpic_to, your_username:your_username, message_title:message_title, message_contents:message_contents}, 
      success: function(){ 
       $('form#send_note').hide(function(){$('div.success2').fadeIn();}); 

      } 
     }); 
    return false; 
    }); 
    }); 

Вам нужно будет urldecode почтового ВАРА в PHP, но это должно сделать это.

+0

пытается это сейчас – user1053263

+0

также, ученый прав насчет .val(). В то время как ваш метод будет работать, более подходящим для библиотеки является использование намеченной функции. И если это все еще не удается, попробуйте изменить все эти & на просто и без пробелов между vars. –

+0

DARN такой же предмет. в моем файле PHP у меня есть переменная _POST, проходящая через эту функцию, следует ли удалить ее или добавить другую функцию теперь, когда мы добавили urldecode? $ to_user = htmlspecialchars (обрезка ($ _ POST ['to_user'])); – user1053263

1

1) вы знаете, что с jquery вы можете просто сделать это, не так ли?

var defaultpic_from = $('#defaultpic_from').val(); 

2) также, что вам не нужно, чтобы превратить & в сущности, но, как уже упоминалось, вы должны использовать encodeURIComponent в значениях

3) вы проверенными все переменные действительно имеют значения до получения запроса ajax? что происходит, когда вы смотрите в POST? Вы получаете членов в POST, но нет значений? или нет ключей и нет значений?

4) Попробуйте использовать вкладку Сети Chrome в инструментах разработчиков рассмотреть запрос и ответ

здесь пример, я использую в настоящее время, где PARAMS является НВП строки и синхронизация верно

var callService = function(sync, params, successCB, errorCB){ 
    console.log('ENTER callService'); 
    $.ajax({ 
    type  : 'POST', 
    url  : 'required/core/Service.php', 
    async  : sync, 
    data  : params, 
    dataType : 'json', 
    success : function(data){ 
     console.log('ENTER POST SUCCESS'); 
     successCB(data); 
    }, 
    error  : function(){ 
     console.log('ENTER POST ERROR'); 
     errorCB(); 
    } 
    }); 
}; 

что было бы действительно полезно, если бы вы могли войти в заголовки запросов и ответов и показать их нам. вы могли бы иметь PHP эхо

echo json_encode($_POST); 

, чтобы сделать его проще, чтобы получить ответ

+0

Unfortunatley Я очень мало знаю о javascript, просто очень простое понимание этого.Я передал значения через php без jquery, и он прошел эхо правильно. Я собираюсь поиграть с этой функцией encodeURIComponent и посмотреть, что я могу сделать. Большое вам спасибо за ответ! – user1053263

+0

и от respoonse, я имею в виду, что проще отлаживать, скажем, на вкладке сети Chrome. – thescientist

+0

У меня был хром в течение некоторого времени и никогда не было замечено на вкладке сети. Это облегчает жизнь. Спасибо, сэр. Ну, данные отправляются. Также, когда я пропускаю ajax и перехожу прямо в файл php, значения проходят через штраф. – user1053263

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