私のPHPスクリプトにPOSTデータを送るのに苦労しているようです。POSTデータをPHPスクリプトに送信する - jQuery、AJAX&PHP
My AJAXはPHPスクリプトにデータ(ブログ投稿のID)を送信します。このスクリプトは、データベースと一致するIDを含む行を見つけます。
スクリプトは、ブログポストのタイトルとポストの内容を配列に返します。これは、AJAXがピックアップしてDOMのフォームに挿入します。
Iが正常にでき:
- インサートサンプルデータ(例えば、私は単に私がAJAXに戻って通過していた配列に格納文字列は、それが正常形にこれらの文字列を挿入する場合)。
- 静的IDが指定されている場合(たとえば、$ _POST ['editpostid']を切り替えて代わりに整数5を指定した場合など)、ID = 5の行が正常に検索され、 AJAXはこのデータをフォームに挿入します)。
したがって、私の観点から見ると、IDはPHPスクリプトに到達しない、またはJSONオブジェクト内のIDをスクリプトで見ることができないという問題があります。
私のコードを見て、あなたの考えを教えてください。私はこのすべてに慣れていないので、問題が解決したかどうか、あなたのフィードバックに感謝します。
Javascriptを/ jQueryの:
// When edit button is clicked
$('li.edit').click(function() {
// Get class (postid inserted with PHP) of edit button, excluding edit class
var oldpostid = $(this).attr('class').split(' ')[1];
alert(oldpostid); // Returns the correct postid, for example 5
var jsonObj = { 'postid': oldpostid };
alert(jsonObj); // Returns 'object Object'
// Send postid to PHP script
$.ajax({
type: 'POST',
url: '../scripts/fetchpost.php',
dataType: 'json',
data: { 'editpostid': jsonObj },
success: function() {
// Fetch post data back from script
$.getJSON('../scripts/fetchpost.php', function(data) {
alert(data.title); // Returns null
alert(data.content); // Returns null
// All of the below code works if the PHP script returns sample text,
// or if an ID is specified in the PHP script itself
var title = data.title;
var content = data.content;
// Insert data into editor
$('#titlehead').text(title);
$('#edittitle').val(title);
var editor = 'editpost-content';
tinymce.get(editor).setContent(content);
});
},
error: function(e) {
console.log(e.message);
}
});
});
PHP:
<?php
// Specifies connection details
include('../scripts/config.php');
// Fetch data from AJAX
$postid = $_POST['editpostid']; // Where I think the problem lies. Returns null.
// Again, this works if I switch out $_POST with an integer, such as 5
// Find rows in database that match postid
$postedit_qry = mysqli_query($dbconnect, "SELECT * FROM posts WHERE postid='$postid'");
// Store results in an associative array
$row = mysqli_fetch_assoc($postedit_qry);
// Split array into variables
$title = $row['title'];
$content = $row['content'];
// Organise data into an array for json
$postedit = array(
'title' => $title,
'content' => $content
);
// Return array as json object for ajax to pick up
echo json_encode($postedit);
// Close connection
mysqli_close($dbconnect);
?>
アップデート - ソリューション:
固定のjQuery/Javascriptを:
// Snip
// Get class (postid inserted with PHP) of edit button, excluding edit class
var oldpostid = $(this).attr('class').split(' ')[1];
// Send postid to PHP script
$.ajax({
type: 'POST',
url: '../scripts/fetchpost.php',
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
data: { "editpostid": oldpostid },
success: function(data) {
var title = data.title;
var content = data.content;
// Snip
PHPスクリプトは同じです。
ご協力いただきありがとうございます。 MrPupper
すべての回答ありがとうございます!私は、FarzadとSpencerの両方の提案を組み合わせて使用しました。これには、PHPドキュメントを使用した私自身の研究も含まれます。私は解決策を含めるために私の元の質問を更新しました。 – MrPupper