2014-03-28 43 views
0

如同你經常感謝,如果你花時間爲我看看這個。

我努力將表單數據發佈到php腳本。目前輸入字段#userreviewtitle可以很好地工作,但textarea #comment和選項選項#hearts似乎不會發布。他們會通過jquery提醒,因此腳本正在拾取它們,但不僅僅是發佈。

我在這裏做錯了什麼?渴望解決這個問題並學習!

下面的形式:

<div id="userreviewcontainer"> 

    <form id="userreview" name="userreview" action="" method="POST"> 
    <input type="text" id="userreviewtitle" name="userreviewtitle" placeholder="Review title"> 
    <textarea id="comment" name="comment" rows="4" placeholder="What is your opinion of <?php the_title(); ?>?"></textarea> 
    <div id="userreviewrating"> 
    <select name="hearts" id="hearts"> 
    <option value="" disabled selected>Your Rating</option> 
    <option value="1">1 Heart</option> 
    <option value="2">2 Hearts</option> 
    <option value="3">3 Hearts</option> 
    <option value="4">4 Hearts</option> 
    <option value="5">5 Hearts</option> 
    </select> 
    </div> 
    <div id="userreviewratingsubmit"> 
    <?php if($_SESSION['login'] !== 1 || $_SESSION['logged_in'] !== "logged") {?> 
    <a rel="prettyPhoto" href="#user_inline" class="button customreviewbutton">Submit</a> 
    <?php } 

    else if($_SESSION['login'] === 1 || $_SESSION['logged_in'] === "logged"){ ?> 
    <input type="submit" value="submit" id="performreview" class="button customreviewbutton" alt="Submit"/> 
    <?php } ?> 


    </div> 
    <div id="clear"></div> 
    </form> 

這裏是Jquery的:

<script type="text/javascript"> 
$(document).ready(function($){ 



       $("#performreview").on('click',function(event) { 
       //Create Variables 
       var title = $('#userreviewtitle').val(); 
       var comment = $('#comment').val(); 
       var hearts = $('#hearts').val(); 
       // Prevent form from submitting the normal way 
       $("#userreviewnew").empty(); 

       $.post("/wp-content/themes/xxxxxxx/process-comment.php", 
       { 
       'userreviewtitle' : title, 
       'comment' : comment, 
       'hearts' : hearts 
       }, 
       function(data) { 
       $('#userreviewnew').append(data);}); 

       event.preventDefault(); 
       }); 
}); 
</script> 

再次非常感謝,如果你能在朝着正確的方向

+0

你是否嘗試過直接序列化表單數據? $(「#userreview」)。serialize()(代替你的json字符串)。 –

+0

對不起@ jeff-ancel,您可能需要進一步解釋一下。我仍然在試圖學習Jquery。 - 代替你的json字符串? – bossbowser

+0

我認爲他的意思是你的數據對象。你沒有json字符串。 –

回答

0

什麼兩個提意見指出我在說,你正在執行額外的不必要的步驟,方法是收集所有表單值並將它們傳遞給Ajax調用。

更好的方法是使用jQuery serialize()方法。您的代碼將看起來像這樣(請注意,我更喜歡$.ajax語法,但它仍然應該容易理解):

$('form').on('submit'), function(e) { 
    e.preventDefault(); 

    $.ajax({ 
    type: 'post', 
    data: $(this).serialize(), 
    dataType: 'html', 
    success: function(result) { 
     $('userreviewnew').append(result); 
    }, 
    error: function(xhr, status, err) { 
    console.log(err); 
    } 
    }); 

我不能完全確定你用會話狀態做什麼,但重要的部分是$.ajax呼叫中以data開頭的行。如果你在製作這個mod之後還沒有得到預期的值,請更新。