如何使用 jQuery 的 $.ajax() 函数来运行 php 脚本? [复制]

Posted

技术标签:

【中文标题】如何使用 jQuery 的 $.ajax() 函数来运行 php 脚本? [复制]【英文标题】:How can I use jQuery´s $.ajax() function to run php script? [duplicate] 【发布时间】:2015-05-31 14:55:57 【问题描述】:

为了便于理解,我制作了一个示例代码,因为我的实际代码要大得多。

基本上,我想要完成的是运行我的 php 脚本,该脚本使用 ajax 编辑 XML 文件。这是因为我需要在我的实际项目中的 javascript 中执行此操作。

这是我目前所拥有的:

包含 ajax 函数的 .php 文件:

<!DOCTYPE html>
<html>
<head>
<script>
function editXMLDoc()

  $.ajax(
  url: "sensors.php",
  context: document.body
).done(function() 
  $( this ).addClass( "done" );
);

</script>
</head>
<body>

<button type="button" onclick="editXMLDoc()">Endre XML</button>

</body>
</html>

这是写入 xml 的 php 脚本:

<?php
include 'sensor.php';
$b=new sensor();

$arr=$b->load('sensor.xml');         

for($i=0,$ms=count($arr);$i<$ms;$i++)

  if($arr[$i]['fields']['status']=='1')
  
     $arr[$i]['fields']['status']='0';
  else
    $arr[$i]['fields']['status']='1';
  

echo "Completed<br/>";
//3. save array to xml
$b->save('sensor.xml',$arr);
?>

我知道脚本正在运行,所以我很确定问题是 ajax 函数和 php 脚本之间的连接。

谁能帮帮我?

【问题讨论】:

在 Ajax 中,您使用函数 sensors.php 但 php 文件称为 sensor.php。或者带有脚本的文件叫做sensors.php? 不,不是。 php 文件包括另一个名为 sensor.php 的 php 文件。我知道这可能会让人感到困惑。 @user2927356:这是否也回答了您之前的问题***.com/q/29278936/367456? 【参考方案1】:

试试这段代码...实际上你没有附加 jQuery 库。

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script type="text/javascript">
            jQuery(document).ready(function($)
                var resp = $("#response");
                $.ajax(
                    type: "POST", // Method type GET/POST           
                    url: "sensors.php", //Ajax Action url
                    data: ,

                    // Before call ajax you can do activity like please wait message
                    beforeSend: function(xhr)
                        resp.html("Please wait...");
                    ,

                    //Will call if method not exists or any error inside php file
                    error: function(qXHR, textStatus, errorThrow)
                        resp.html("There are an error");
                    ,

                    success: function(data, textStatus, jqXHR)
                        resp.html(data);
                    
                );
            );
        </script>
    </head>
    <body>
        <div id="response"></div>
    </body>
</html>

【讨论】:

哈利路亚!非常感谢!【参考方案2】:

像这样使用 AJAX:

<script type="text/javascript">
  jQuery(document).ready(function($)

    $('.rt11').click(function()

        $.ajax(
            type: "POST", // Method type GET/POST           
            url: "sensors.php", //Ajax Action url
            data: yourKey: "yourValue", yourKey1: "another value",

            // Before call ajax you can do activity like please wait message
            beforeSend: function(xhr)
                console.log("Please wait...");
            ,

            //Will call if method not exists or any error inside php file
            error: function(qXHR, textStatus, errorThrow)
                console.log("There are an error");
            ,

            success: function(data, textStatus, jqXHR)
                console.log(data);
            
        );

    );

);
</script>

【讨论】:

好的,但是如何用按钮调用这个函数呢? 在您的 ajax 调用中,您不需要“data”、“beforeSend”和“type”属性来使其更简单。如果它返回一个xml文件,添加dataType:“xml”。 $('.rt11').click(function() 中传递您的元素选择器 CLASS 或 ID @Sateesh 很抱歉我太笨了,但是当你说把它传进去时,我该怎么做。认为它会是这样的: 我的意思是你正在使用 class="rt11" 并且这个类已经 $(".rt11") 用在大括号里等等按钮click ajax 请求会调用。如果您使用的是 Firefox,则安装名为 Firebug 的插件,然后在控制台中检查您将看到 ajax 请求。【参考方案3】:

我认为代码没有问题,但有时在大代码中 min.js 文件没有正确包含。请尝试以下代码。无需更改sensors.php 文件。

<!DOCTYPE html>
<html>
<head>
<script>
$(document).ready(function()
    $('.rt11').click(function()
  $.ajax(
  url: "sensors.php",
  context: document.body
).done(function(html) 
  $( this ).addClass( "done" );
);
);
);
</script>
</head>
<body>

<button type="button" class="rt11">Endre XML</button>

</body>
</html>

【讨论】:

刚刚试了一下。不幸的是没有运气。 sensors.php 没有按照它设置的那样做【参考方案4】:

HTML:

<button type="button" id="idButton">Endre XML</button>

JS:

  $("#idButton").click(function()
        $.ajax(
                url: 'sensors.php',
                dataType: "xml", //if it returns a xml file
                success: function (data) 
                    // everything is ok
                    alert(data)

                ,
                error: function (xhr, status, error) 
                    // Something went wrong
                    if (xhr.status > 0) alert('Error: ' + status);
                
            );

        )    

【讨论】:

【参考方案5】:

试试这个,我认为你错过了包含 jQuery 库文件。在 ajax 调用后将发布数据发送到你的 php 文件。

    <!DOCTYPE html>
    <html>
    <head>
    //include the jQuery library file
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    function editXMLDoc()
    
      var myvalue='123';  
      $.ajax(
              url: "sensors.php",
              context: document.body,
              data: myvalue:myvalue,   
             ).done(function() 
                 $( this ).addClass( "done" );
             );
     
    </script>
    </head>
    <body>

    <button type="button" onclick="editXMLDoc()">Endre XML</button>

    </body>
    </html>

【讨论】:

太棒了!导入是缺少的链接!

以上是关于如何使用 jQuery 的 $.ajax() 函数来运行 php 脚本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 在 JSON ajax 请求中回调 404 上的函数?

如何使用 jQuery 的 $.ajax() 函数来运行 php 脚本? [复制]

如何使用 jQuery AJAX 调用 ASP.Net 字符串函数?

如何使用 jquery ajax 调用来调用 php 函数? [复制]

Jquery Select2,如何在 on(change) 函数中访问 ajax 数据?

使用 jQuery AJAX 调用 PHP 函数