2013-04-12 38 views
0

我正在嘗試使用ajax插入註釋。一切工作正常,除了$ _POST。它似乎沒有發佈數據,所以表中的註釋字段爲空。其他事情工作正常,如插入日期。我只有ajax問題(在php中沒有問題)。

總之,這裏是我的代碼: -ajax發佈數據並插入數據庫

<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()功能的數據屬性必須是Object類型的。就像這樣:

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

Wat錯誤,你會得到? – 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