2017-03-23 124 views
0

我是相當新的張貼在計算器上,所以我希望我的帖子遵循正確的標準,如果它不是我道歉。我會盡可能縮短我對問題的質疑和解釋。如何解決Ajax「POST」方法返回空數據字符串?

我正在嘗試創建一個輸入字段,允許用戶更新他們的配置文件中的關於部分,以便其他用戶能夠看到。我已經看過類似的帖子,但沒有一個真的有解決方案,我的問題與我能找到的相匹配。

我正在使用POST方法的窗體,它具有隱藏字段,其中包含userId的值並存儲輸入字段中的字符串。我使用與它調用其存儲輸入到稱爲var text,我想然後一個變量的值被存儲到與用戶ID和註釋數據庫Ajax請求id = "post"關聯到按鈕一個onClick功能。然而,控制檯返回「一個空字符串」(圖片鏈接在最底部)。我不確定如何解決這個問題,因爲我對使用Ajax還很陌生,而且我儘可能地學習。

myAccount.php

<h2>About</h2>  
<form method='POST' id="postForm"> 
<input type='hidden' name='posterId' value="<?php echo $user['userId']?>"> 
<input name="post" id='post' value=""> 
<br/> 
<br/> 
<button type="button" onclick='setComment()' name='submit'>Post it</button> 
</form> 

main.js

function setComment() { 
    var text = $("#post").val(); 
    $.ajax({ 
     type: 'POST', 
     url: 'setAbout.php', 
     data: {'text': text}, 
     success: function(data) { 
      console.log(data); 
     } 
    }); 
} 

Return "an empty string"

注:如果您發佈的解決方案,請說明理由,爲什麼你拿了自從我來到這裏以後,那種特殊的方法o學習。謝謝!

+0

打印,因爲你不返回任何東西。你可以有類似'回聲json_encode($結果)' – guradio

+0

你不提交'posterId'和[媽媽的漏洞(https://xkcd.com/327/)/ [表鮑比 - 指導預防SQL注入](http://bobby-tables.com/) – Andreas

+0

@Andreas假設使用'real_escape_string()'。我總是感覺你逃脫了$ _POST變量? – jase

回答

0
<input type='hidden' name='posterId' value="<?php echo $user['userId']?>" id = 'posterId'> 

function setComment() { 
    var text = $("#post").val(); 
    var posterId=$('#posterId').val(); 
    $.ajax({ 
    type: 'POST', 
    url: 'setAbout.php', 
    data: {'text': text, 'posterId':posterId}, 
    success: function(data){ 
     console.log(data); 
    } 
}); 
} 

您正在檢查PHP腳本中的變量posterId,該腳本在執行ajax調用時未設置。

並且在腳本中您只是運行準備好的查詢,您沒有返回任何內容作爲對請求的響應。所以,即使請求成功,你會不會在響應中得到任何在控制檯

+0

現在有道理。謝謝! – jase

0

您使用AJAX:{text}變量發佈,但在PHP代碼中,您希望獲得{posterId}變量。爲什麼?改變你的變量名稱,並確保在JS和PHP代碼中使用相同的名稱變量。而在AJAX請求中,PHP不能不返回任何內容。所以在PHP代碼中,你應該使用'echo'來返回。