如何使用AJAX与服务器通信并运行代码?

时间:2016-06-14 13:32:54

标签: javascript php jquery python ajax

我一直在学习使用AJAX和GET请求,它允许我在服务器上访问带有数据数组的PHP脚本。我希望能够发送一个请求,告诉服务器运行将打开应用程序并操作此应用程序的一些信息的代码。

这是我用来首先与服务器通信的代码,然后向服务器发送请求,最后处理来自服务器的响应。

var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject(){
    var xmlHttp;

    if(window.ActiveXObject)
    {
        try
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e)
        {
            xmlHttp = false;
        }
    }
    else
    {
        try
        {
            xmlHttp = new XMLHttpRequest();
        }
        catch(e)
        {
            xmlHttp = false;
        }
    }

    if(!xmlHttp)
    {
        alert("cant create that object hoss");
    }
    else
    {
        return xmlHttp;
    }
}

function process(){
    if(xmlHttp.readyState == 0 || xmlHttp.readyState == 4) //State were object is free and ready to communicate with server
    {
        food = 'bacon';
        xmlHttp.open("GET", "ExecuteMaya.php?food="+food,true); //Creates request that we are sending to server
        xmlHttp.onreadystatechange = handleServerResponse;
        xmlHttp.send(null);
    }
    else
    {
        setTimeout('process()', 1000);
    }
}

function handleServerResponse(){
    if(xmlHttp.readyState == 4)
    {
        if(xmlHttp.status == 200) //Means communication was successful
        {
            var xmlResponse = xmlHttp.responseText;
            var xmldom = (new DOMParser()).parseFromString(xmlResponse, 'text/xml');
            var text = xmldom.getElementsByTagName("response")[0];
            var message = text.childNodes[0].nodeValue;
            foodTextOutput = message;
            setTimeout('process()', 1000);
        }
        else
        {
            alert('Something went wrong!');
        }
    }
}

这是我在学习如何使用AJAX时使用的PHP。当我将上述代码中的'xmldom'变量打印到控制台并检查它时出现以下错误 - “第1行第2行的错误:文档末尾的额外内容”。对于我原来的帖子,这可能是一个不同的问题,但我想我已经提到这个错误发生了。然后这对'var message = text.childNodes [0] .nodeValue;'行产生了影响。产生错误 - “未捕获的TypeError:无法读取未定义的属性'childNodes'”。

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>':

echo '<response>';
    $food = $_GET['food'];
    $foodArray = array('tuna','bacon','beef','loaf','ham');
    if(in_array($food, $foodArray))
        echo 'We do have '.$food.'!';
    elseif($food == '')
        echo 'Enter a food you idiot';
    else
        echo 'Sorry punk we dont sell no '.$food.'!';
echo '</response>';
?>

我一直在学习AJAX的代码可能不相关,我只是想发布它以防我可以使用已编写的代码。

总而言之,我希望能够将一个布尔值或任何可行的AJAX发送到服务器,告诉它运行脚本。然后,该脚本将打开Maya应用程序并运行我编写的一些Python代码。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

一旦调用PHP文件,就会开始在服务器上运行代码。如果要从PHP运行外部应用程序,请查看exec()函数:

http://php.net/manual/en/function.exec.php

答案 1 :(得分:0)

您的问题标签中列出了jQuery。你有没有比较过javascript和jQuery代码?

使用jQuery的优点是:

  
      
  • 少打字,
  •   
  • 更简单的结构
  •   
  • 自动跨浏览器
  •   
  • 轻松使用Promises界面
  •   

看看这些示例,看看您是否更喜欢jQuery AJAX方法:

Three simple examples

dynamic drop down box?

Chain AJAX Requests with jQuery Deferred