2013-04-12 5 views
0

Я пытаюсь вставить комментарий с помощью ajax. Все работает отлично, за исключением $ _POST. Похоже, что данные не публикуются, поэтому поле комментариев в таблице пуст. Другие вещи прекрасно работают, например, ввод даты. У меня только проблема с ajax (никаких проблем с php).

Во всяком случае, вот мой код: -данные ajax post и вставить в базу данных

<head> 
<script> 
function su_post(id) { 
    $("#load_post").show(), 

    $("#post_submit").click(function() { 
    var c_post = $("#c_post").val(); 
    var dataString = '&c_post=' + c_post; 

    $.ajax({ 
    type: "POST", 
    url: '/script/post.php', 
    data: "id=post_script" + id, 
    cache: false, 
    success: function(){ 
    $("#load_post").fadeOut(); 
    } 
    })}); 
}; 
</script> 
</head> 
<body> 
<form id="form_post" method="post" action="javascript:su_post(1)"> 
<label for="c_post">Post your updates/status</label> 
<input type="text" name="c_post" id="c_post" /> 
<br /><br /><input type="submit" id="post_submit" value="Post" /> 
</form> 
</body> 

редактировать: так как вы не могли бы меня поняли; существует проблема с получением значения, которое вы вводите в поле ввода, и отправки или отправки значения post.php. Когда я помещаю data: {id: post_script + id, c_post: c_post}, он, похоже, вообще не загружает php-файл. (Застревает на проводке ->http://prntscr.com/10dmjt)

Спасибо заранее :)

+0

Какова роль вашего поля 'rand'? Что произойдет, если вы это оставите? И почему заявление 'append' закомментировано? – Floris

+0

Извините, я не собирался публиковать эту строку. Я прокомментировал это, поэтому я запомню его, когда мне это понадобится. –

ответ

0

Свойство данных в вашей ajax() функции должен иметь тип объекта. Как это:

data: { id: "post_script" + id } 

Вы также имели некоторые синтаксические ошибки, ваша функция должна выглядеть следующим образом:

function su_post(id) { 
    $("#load_post").show(); 

    $("#post_submit").click(function() { 
     var c_post = $("#c_post").val(); 
     var dataString = '&c_post=' + c_post; 

     $.post("ajax_login.php",{ user_name:$('#username').val(),password:$('#password').val(),rand:Math.random() }); 

     $.ajax({ 
      type: "POST", 
      url: '/script/post.php', 
      data: { id: "post_script" + id }, 
      cache: false, 
      success: function(){ 
       $("#load_post").fadeOut(); 
      } 
     }); 
    }); 
} 
+1

Ват ошибка вы получаете? – errieman

+0

Ваш код был довольно беспорядочным. Кроме того, вы включили библиотеку jQuery на свою страницу? – errieman

+0

Да, я включил библиотеку jquery –

0

Вы вызываете функцию javascript:su_post(1), так что, казалось бы, что ваше поле данных содержит {id: "post_script1"} только. Где ваш «комментарий» передается AJAX? Ты ничего с var dataString не делать после присвоения ей значения ...

Может быть, вы собираетесь иметь что-то вроде этой линии:

data: "id=post_script" + id + dataString, 

так, я думаю, что dataString содержит &c_post=whatever the comment is после того, как вы сделали

var c_post = $("#c_post").val(); 
var dataString = '&c_post=' + c_post; 

мне интересно, нужно ли вам некоторые дополнительные процитировать в dataString, а также ... Я не считаю, что функция $(#c_post).val() заботится об этом, так что я подозреваю, что вам нужно escape() где-нибудь - или ajax сделайте это за вас? Наверное, это то, что приносит пользу {} @ errieman ... он превращает всю вещь в объект и берет случай сбежания для вас. Это сделало бы линию вам нужно:

data: {id: post_script + id, c_post: c_post} 

Я сомневаюсь, что это оказывается совсем верно, так как у меня угадать, что вы пытаетесь сделать - но я надеюсь, что один из них даст вы вдохновляете, чтобы решить свою проблему.

+0

Я вижу из вашего комментария к другому вопросу, который вы пробовали реализовать одним из моих предложений. Я подозреваю, что ваш php-скрипт не счастлив, когда передается объект, поэтому попробуйте просто добавить (экранированный) dataString в соответствии с моим первым предложением; что это делает? – Floris

0

Кажется, что сработал, когда я вынул заявление $("#post_submit").click(function() и положил var c_post = $("#c_post").val();var dataString = '&c_post=' + c_post; наверху.
Теперь мой код выглядит так: -

function su_post(id) { 
    var c_post = $("#c_post").val(); 
    var dataString = '&c_post=' + c_post; 
    $("#load_post").show(), 

    $.ajax({ 
    type: "POST", 
    url: '/script/post.php', 
    data: {c_post:c_post}, 
    cache: false, 
    success: function(){ 
    $("#load_post").fadeOut(); 
    } 
    }); 
}; 
+0

Я рад, что догадался, что вы передавали неправильную информацию ('id' вместо' c_post') было полезно. Вы можете удалить строку 'dataString' из своего кода, так как вы больше не используете его ... – Floris

+0

Что насчет var c_post = $ (" # c_post "). Val() ;? –

+0

Вы также можете перенести это в свой оператор 'data:' - нет необходимости в промежуточном хранилище. Мое правило: если вы используете переменную только один раз, сохраните ее только для удобства чтения. Это предельный случай для этого правила ... – Floris

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