将数据从Javascript发送到PHP并使用PHP的响应作为JS中的变量

时间:2013-07-19 23:48:45

标签: php javascript

我已经检查过,但似乎无法弄清楚这是怎么做的。 我想将表单数据发送到PHP以便将其处理并插入到数据库中(这是有效的)。

然后我想从PHP发送一个变量($ selected_moid)到一个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);
        }
    });
}

3 个答案:

答案 0 :(得分:1)

由于你的问题不是100%清楚,我现在正在努力解决这个问题。首先,Javascript AJAX调用是异步的,这意味着几乎同时调用$.get$.post

如果您尝试从一个响应中获取响应并在第二次调用中使用它,则需要将它们嵌套在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数据。 Javascript将获取文本并将其放入成功函数中的data变量中。

答案 1 :(得分:0)

您需要使用回调函数来获取返回的值。

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

答案 2 :(得分: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
                        }
                    });
    }

现在你可以将它用作Button Click,它也可以起作用:3