0

JQuery の .post 関数を使用して送信し、php スクリプトを実行するサイトがあります。このスクリプトはデータベースにデータを追加しますが、データがデータベースに既に存在する場合、データは追加されません。データが追加されるかどうかに応じて、javascript にさまざまなことをさせたいと考えています。「データが入力されました」または「データが入力されていません」という値をphpに返す方法がわからないので、JavaScriptはその値を使用して次のアクションを決定できます。

これがJavaScriptです。データがデータベースに入力されたことをphpが返した場合にのみ、追加を行いたいと思います。

$('#addpios').click(function() {
  var scopesheetidvalue = $("#scopesheetid").val();
  var piovalue = $("#pioselected").val();
$.post("addpio.php", { scopesheetid: scopesheetidvalue, pionumber: piovalue },function(data){
$('#pioslist').append("<li><input class='removepio' type='submit' value='"+piovalue+"' /><span class='listitem'>PIO "+piovalue+"</span></li>");} 
    );   
}); 

ここにPHPがあります

$scopesheetid = $_POST['scopesheetid'];
$pionumber = $_POST['pionumber'];
$alreadyexisitssql = "SELECT * FROM [ScopesheetPIO] WHERE [ScopesheetID]='$scopesheetid' AND [PIONumber]='$pionumber'";
$alreadyexisits=odbc_exec($connection,$alreadyexisitssql);

if(odbc_fetch_row($alreadyexisits)){
//retrun a value that says the data already exists
}
else{
    $addpiosql = "INSERT INTO [ScopesheetPIO] ([ScopesheetID], [PIONumber]) VALUES ('$scopesheetid', '$pionumber')";
    $addpioresult=odbc_exec($connection,$addpiosql);
//retrun a vlaue that the data was added
}

私が本当に欲しいのは、値を PHP スクリプトから Jquery に戻す方法です。

4

4 に答える 4

1

PHP で配列を作成し、JSON として出力します。次に、返された JSON をスクリプトで調べます。

if(odbc_fetch_row($alreadyexists)){
    // Return a value that says the data already exists
    $result = array(
        "error" => "Data already exists"
    );
} else {
    // Database stuff goes here...
    // Return a value that the data was added
    $result = array(
        "success" => 1
    );
}
echo json_encode($result);

JavaScript$.postコールバック:

function(data) {
    if(data.success) {
        // Append element to HTML
    } else {
        // An error occurred, inform the user
        // Don't actually use alert(), this is just for demonstrating purposes
        alert(data.error);
    }
}

$result後で、配列にデータを追加しdataて JavaScriptから読み取るだけで、余分なデータを含むより複雑な応答を作成できます。

于 2012-05-31T10:11:32.087 に答える
1

jQuery を次のように変更します。

$.post('addpio.php', { ... }, function(data) {
    if (data.result) {
        $('#pioslist').append(...);
    }
}, 'json');

PHP ファイルでは、データが挿入されるときにこれを使用します。

echo json_encode(array(
    'result' => TRUE
));

データが既に存在する場合は、これを使用します。

echo json_encode(array(
    'result' => FALSE
));
于 2012-05-31T10:16:39.997 に答える
0

スクリプトから jQuery にデータを簡単に渡すことができます。IMO は、JSON をより適切に使用するのが最善だと思います。

PHP (for example):
$arrayOfData=array("val1"=>"value","val2"=>"value");

//encode it
$arrayOfData=json_encode($arrayOfData);

//print it on screen
echo $arrayOfData;

そして、を使用してjQueryで取得します。getJSON.

$.getJSON("url_of_php_fle",function(myData){

//now use myData as the array:
alert(myData.val1);//which will give you "value" as what you set in PHP

}):

本当に簡単です。

于 2012-05-31T10:12:20.593 に答える
0

コールバック関数でテストするものを PHP に記述します。

PHP

if(odbc_fetch_row($alreadyexisits)){
 echo "ko";
}
else{
    $addpiosql = "INSERT INTO [ScopesheetPIO] ([ScopesheetID], [PIONumber]) VALUES ('$scopesheetid', '$pionumber')";
    $addpioresult=odbc_exec($connection,$addpiosql);
    echo "ok";
}

JS

$.post("addpio.php", { scopesheetid: scopesheetidvalue, pionumber: piovalue },function(data){
    if( data == 'ok' ) {
        $('#pioslist').append("<li><input class='removepio' type='submit' value='"+piovalue+"' /><span class='listitem'>PIO "+piovalue+"</span></li>");
    }
});  
于 2012-05-31T10:11:57.990 に答える