使用AJAX发布到PHP - 将值恢复为原始脚本

时间:2016-04-17 01:26:57

标签: php jquery ajax

对不起标题血腥 - 我甚至不确定我真正要问的是什么。

我有一个Jquery脚本,用于检查边框颜色。如果颜色匹配,则将其保存到数组并将其发送到PHP脚本。

            var fields={};
            fields[0]=$('.block0').css("border-color");
            var divs={};
            divs[0]=$('.block0 h2').html();
            //The above are just examples sense the code is a little lengthy
            var c=0;
            var i=0;
            var elements={};
            while (c !== 24)
            {
                if (fields[c] == "rgb(129, 222, 252)")
                {
                    elements[i]=divs[c];
                    alert (elements[i]);
                    i++;
                }
                c++;
            }
            $.ajax({
                url: "process.php",
                data: elements,
                type: "POST",
            });

这些都位于“hello.php”文件中。

完成后,如您所见,它会将变量传递给名为“process.php”的PHP脚本。在这个脚本中,有一些事情发生,比如从MYSQL数据库,配置文件等中获取更多信息,然后我的GOAL将这些额外信息传递给“hello.php”文件。

我这样做的原因是因为我正在努力(我最好)避免重定向或刷新。我不完全确定我是否正确地做到了这一点。 无论如何,当我试图将额外信息从“process.php”传递给“hello.php”时,我遇到了一些障碍。非常感谢任何和所有建议!

编辑:根据请求,还有一些内容:

hello.php

var openIt=function()
        {
            var fields={};
                fields[0]=$('.block0').css("border-color");
                fields[1]=$('.block1').css("border-color");
                fields[2]=$('.block2').css("border-color");
                fields[3]=$('.block3').css("border-color");
                fields[4]=$('.block4').css("border-color");
                fields[5]=$('.block5').css("border-color");
                fields[6]=$('.block6').css("border-color");
                fields[7]=$('.block7').css("border-color");
                fields[8]=$('.mmod2').css("border-color");
                fields[9]=$('.mmod3').css("border-color");
                fields[10]=$('.mmod4').css("border-color");
                fields[11]=$('.mmod5').css("border-color");
                fields[12]=$('.mmod6').css("border-color");
                fields[13]=$('.mmod7').css("border-color");
                fields[14]=$('.mmod8').css("border-color");
                fields[15]=$('.mmod9').css("border-color");
                fields[16]=$('.ttemp2').css("border-color");
                fields[17]=$('.ttemp3').css("border-color");
                fields[18]=$('.ttemp4').css("border-color");
                fields[19]=$('.ttemp5').css("border-color");
                fields[20]=$('.ttemp6').css("border-color");
                fields[21]=$('.ttemp7').css("border-color");
                fields[22]=$('.ttemp8').css("border-color");
                fields[23]=$('.ttemp9').css("border-color");
            var divs={};
                divs[0]=$('.block0 h2').html();
                divs[1]=$('.block1 h2').html();
                divs[2]=$('.block2 h2').html();
                divs[3]=$('.block3 h2').html();
                divs[4]=$('.block4 h2').html();
                divs[5]=$('.block5 h2').html();
                divs[6]=$('.block6 h2').html();
                divs[7]=$('.block7 h2').html();
                divs[8]=$('.mmod2 h2').html();
                divs[9]=$('.mmod3 h2').html();
                divs[10]=$('.mmod4 h2').html();
                divs[11]=$('.mmod5 h2').html();
                divs[12]=$('.mmod6 h2').html();
                divs[13]=$('.mmod7 h2').html();
                divs[14]=$('.mmod8 h2').html();
                divs[15]=$('.mmod9 h2').html();
                divs[16]=$('.ttemp2 h2').html();
                divs[17]=$('.ttemp3 h2').html();
                divs[18]=$('.ttemp4 h2').html();
                divs[19]=$('.ttemp5 h2').html();
                divs[20]=$('.ttemp6 h2').html();
                divs[21]=$('.ttemp7 h2').html();
                divs[22]=$('.ttemp8 h2').html();
                divs[23]=$('.ttemp9 h2').html();


            var c=0;
            var i=0;
            var elements={};
            while (c !== 24)
            {
                if (fields[c] == "rgb(129, 222, 252)")
                {
                    elements[i]=divs[c];
                    alert (elements[i]);
                    i++;
                }
                c++;
            }
            $.ajax({
                url: "process.php",
                data: elements,
                type: "POST",
            });

        }

这很难看,我知道......

这是hello.php的另一个片段,实际上是在抛出标题和内容:

<?php
                    $sql = "SELECT * FROM case_info";
                    $result = mysqli_query($conn, $sql);
                    if (mysqli_num_rows($result) > 0) 
                    {
                        $row = array();
                        while($row[] = mysqli_fetch_array($result));
                        $max=count ($row);
                        $c=0;
                        while (($max-1) <> $c)
                        {
                            echo    '<script>
                                    var block'.$c.'=function(){
                                        $(".block'.$c.'").css("border",".15vw solid #81DEFC");

                                    }
                                    </script>';
                            echo    '<div onClick="block'.$c.'()" class="block'.$c.'">
                                        <div class="headerbl"><h2>'.$row[$c]["id"].'</h2></div>
                                        <p>'.$row[$c]["client"].'</p>
                                    </div>';
                            $c++;
                        }
                    }

                ?>

最后,当用户打开其中一个“块”时,会有一个新的<div>包含信息。基本上,用户将:

  1. 点击“<div class="block0">
  2. 点击打开
  3. 新的叠加式div将包含有关他们点击的特定“块”的更多信息。可以想象它就像是“阅读更多”类型的场景。

2 个答案:

答案 0 :(得分:1)

使用ajax回调函数

int main(void)
{
    char fInName[50];
    char fOutName[50];

    // ensure proper usage
    do
    {
        printf("What file would you like to open? ");
        // get infile from user and remove trailing newline '\n' character
        fgets(fInName, 50, stdin);
        fInName[strcspn(fInName, "\n")] = '\0';
    }
    // prompt for input until user enters something
    while (strlen(fInName) < 1);

    do
    {
        printf("What file would you like to output to? ");
        // get outfile from user and remove trailing newline '\n' character
        fgets(fOutName, 50, stdin);
        fOutName[strcspn(fOutName, "\n")] = '\0';
    }
    // prompt for input until user enters something
    while (strlen(fOutName) < 1);

    FILE *fin = fopen(fInName, "r");

    if (fin == NULL)
    {
        printf("Error: Cannot open input file %s.", fInName);
        return 1;
    }
    else
    {
        printf("file found");
    }
}

使用json格式数据传递php脚本中的变量,在php脚本中应该是这样的:

$.ajax({
        url: 'process.php',
        type: 'POST',
        data: data,
        contentType: false,
        cache: false,
        processData: false,
        success: function(data) {
            var obj = $.parseJSON(data);
            alert(obj.result);                  
        }
});

然后使用parseJSON()解析javascript中的json数据,使用该变量,使用obj.result或obj.data。

答案 1 :(得分:0)

JQuery AJAX有一个能够完成您所需要的功能。

success()函数:

请求成功时要调用的函数。该函数传递三个参数:从服务器返回的数据,根据dataType参数或dataFilter回调函数格式化(如果指定);描述状态的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象。

你可以这样做你的ajax:

$.ajax({
            url: "process.php",
            data: elements,
            type: "POST",
            success: function(data) {

               // data is a variable coming from process.php as return value

            }
        });

祝你好运!