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几乎同时被调用。

如果您尝试从其中获取响应并在第二次调用中使用它,那么您需要将它们嵌套在成功函数中。由于您使用的是 jQuery,请查看他们的 API 以查看您的 AJAX 调用可以处理的参数 ( http://api.jquery.com/jQuery.post/ )

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

在您的 PHP 脚本中,在您更新了数据库和所有内容之后,只echo需要数据即可。Javascript 将获取文本并将其放入data成功函数中的变量中。

于 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 回答