私は数日間これを叩いていますので、助けを求める時間です。私はドロップダウンでユーザーの選択に基づいてテーブルのサブセットのみを表示するAjax/PHP/MySQLを使用しようとしています。 PHPコードは、MySQLストアドプロシージャを呼び出します。私が構築しているコールは正しいです。もしそれをエコーしてコピーし、それをphpMyAdmin MySQLコンソールから実行すると、私は期待した結果を得ています。ページ自体の関連する部分があるAjaxからPHPへの呼び出し/ PHPはnull-ishの値を返します
{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null}
:
<script>
function updateActions() {
var results = '';
var success = false;
var selectedIssues = getIssues();
var fnargs = "GetActions|'" + selectedIssues + "'";
$.ajax({
url: 'retrievedata.php',
type: "POST",
async:false,
data: {"functionname":"getactions", "arguments":fnargs},
dataType: "JSON",
complete: function (obj, textStatus) {
if((obj.error != '')) {
alert(JSON.parse(obj));
$("#testresult").text(textStatus);
}
else {
$("#testresult").text("Error");
// console.log(obj.error);
}
success = true;
},
error: function(textStatus, errorThrown) {
success = false;
$("#testresult").text('Error occurred: '.textStatus);
}
})
};
</script>
二しかし、アヤックスで呼ばれていますPHPコードから、私の代わりにこの結果を(私はそれをJSON_encode後、Firebugの中でエコー)を参照してくださいノート。まず、呼び出すgetIssuesスクリプトは期待値を返します。第二に、私が実際に得た結果を処理するための正しいコードを実際に書いたわけではありません。それでも正しい結果をページに戻そうとしています。私は別のPHPを持って
<?php
function connect2db() {
$hostname = "XXX";
$username = "XXX";
$password = "XXX";
$database = "XXX";
$conn = mysqli_connect($hostname, $username, $password, $database);
if($conn == false) {
echo "Connection could not be established.<br />";
die(print_r(myslqi_connect_error(), true));
}
return $conn;
}
function getactions($spname, $params, $errorstring = 'Unable to retrieve requested data') {
$conn = connect2db();
$query = "CALL ".$spname."(".$params.")";
echo $query."\r\n";
$result = mysqli_query($conn, $query);
if ($result == false) {
$errmessage = mysqli_error($conn);
$allresult = $errmessage;
echo $errmessage;
die(print_r(mysql_error(), true));
}
else {
echo "In else case\r\n";
$allresult = json_encode($result);
}
echo $allresult;
return $allresult;
}
?>
:(もちろん、取り出したデータや資格情報を特定すると)dbfns.phpの関連する部分がある
<?php
include "dbfns.php";
$aResult = array();
$returnval = 'before tests';
if(!isset($_POST['functionname'])) {
$aResult['error'] = 'No function name!';
}
if(!isset($_POST['arguments'])) {
$aResult['error'] = 'No function arguments!';
}
if(!isset($aResult['error'])) {
$functionName = $_POST['functionname'];
$argsarray = explode('|', $_POST['arguments']);
$argcount = count($argsarray);
$returnval = 'before switch';
switch($_POST['functionname']) {
case 'getactions':
if($argcount < 2) {
$returnval = 'too few arguments';
}
else {
$returnval = 'in else';
$returnval = getactions($argsarray[0], $argsarray[1]);
}
break;
default:
$returnval = 'function not found';
break;
}
}
return $returnval;
?>
:
ページretrievedata.phpは次のようになります同じMySQL SPを呼び出すAjaxからではなく、期待される結果を返すretrieveataの関数であるため、私はSPが私の期待することをかなり確信しています。
私はこのすべてをAjaxからどうやってやるのか分からないと思います。
編集:私はajax呼び出しで完了するのではなく、_POSTではなく_GETを成功させることを追加したいと思います。結果に変化はありません。
他にもconnect2dbを使用していますか?(ユーザーがspに対して実行権を持っていないのだろうか?) –
はい、他の機能はgetactionsの変形です。呼び出しコードは同一です。 –