0

私は周りをチェックしましたが、これがどのように行われるのか理解できないようです。フォーム データを PHP に送信して処理し、データベースに挿入したいと考えています (これは機能しています)。

次に、再度使用できるように、変数 ($selected_moid) を PHP から JavaScript 関数 (可能であれば同じもの) に送り返したいと思います。

function submit_data() {
    "use strict";
    $.post('insert.php', $('#formName').formSerialize());
    $.get('add_host.cgi?moid='.$selected_moid.');
}

これが私の最新の試みですが、まだエラーが発生しています:

PHP:

$get_moid = "
    SELECT ID FROM nagios.view_all_monitored_objects
    WHERE CoID='$company'
    AND MoTypeID='$type'
    AND MoName='$name'
    AND DNS='$name.$selected_shortname.mon'
    AND IP='$ip'
    ";
while($MonitoredObjectID = mysql_fetch_row($get_moid)){
    //Sets MonitoredObjectID for added/edited device.
    $Response = $MonitoredObjectID;
    if ($logon_choice = '1') {
        $Response = $Response'&'$logon_id;
        $Response = $Response'&'$logon_pwd;
    }
}
echo json_encode($response);

JS:

function submit_data(action, formName) {
    "use strict";
    $.ajax({
        cache: false,
        type: 'POST',
        url: 'library/plugins/' + action + '.php',
        data: $('#' + formName).serialize(),
        success: function (response) {
            // PROCESS DATA HERE
            var resp = $.parseJSON(response);
            $.get('/nagios/cgi-bin/add_host.cgi', {moid: resp });
            alert('success!');
        },
        error: function (response) {
            //PROCESS HERE FOR FAILURE
            alert('failure 'response);
        }
    });
}
4

3 に答える 3

1

あなたの質問は100%明確ではないので、私はこれについて手足を出しています。まず第一に、Javascript AJAX 呼び出しは非同期です。つまり、$.getとの両方$.postがほぼ同時に呼び出されます。

1 つの応答を取得して 2 番目の呼び出しで使用する場合は、success 関数でそれらをネストする必要があります。jQuery を使用しているため、API を見て、AJAX 呼び出しで処理できる引数を確認してください ( http://api.jquery.com/jQuery.post/ ) 。

$.post('insert.php', $('#formName').formSerialize(),function(data){
    $.get('add_host.cgi?moid='+data);
});

PHP スクリプトでは、データベースとすべてを更新した後、必要なechoのはデータだけです。dataJavascript はテキストを受け取り、success 関数の変数に入れます。

于 2013-07-19T23:54:08.170 に答える
0

戻り値を取得するには、コールバック関数を使用する必要があります。

function submit_data(action, formName) {
    "use strict";
    $.post('insert.php', $('#' + formName).formSerialize(), function (selected_moid) {
        $.get('add_host.cgi', {moid: selected_moid });
    });
}
于 2013-07-19T23:55:28.170 に答える
0
    $("ID OF THE SUBMIT BUTTON").click(function() {
            $.ajax({
                cache: false,
                type: 'POST',
                url: 'FILE IN HERE FOR PROCESSING',
                data: $("ID HERE OF THE FORM").serialize(),
                success: function(data) {
                   // PROCESS DATA HERE

                },
                error: function(data) {
                   //PROCESS HERE FOR FAILURE
                }
            });
            return false; //This stops the Button from Actually Preforming
        });

今すぐPHPのために

<?php
 start_session(); <-- This will make it share the same Session Princables
 //error check and soforth use $_POST[] to get everything
$Response = array('success'=>true, 'VAR'=>'DATA'); <--- Success 
$Response = array('success'=>false, 'VAR'=>'DATA'); <--- fails
  echo json_encode($Response);
?>

言及するのを忘れていましたが、これは JavaScript/jQuery を使用しており、これを行うには ajax を使用しています。

関数としてのこれの例

    Var Form_Data = THIS IS THE DATA OF THE FORM;
function YOUR FUNCTION HERE(VARS HERE) {
                   $.ajax({
                        cache: false,
                        type: 'POST',
                        url: 'FILE IN HERE FOR PROCESSING',
                        data:Form_Data.serialize(),
                        success: function(data) {
                           // PROCESS DATA HERE

                        },
                        error: function(data) {
                           //PROCESS HERE FOR FAILURE
                        }
                    });
    }

これで、これをボタンクリックとして使用できます。これも機能します:3

于 2013-07-19T23:59:47.853 に答える