ajax如何使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax如何使用?相关的知识,希望对你有一定的参考价值。

我在点击一个button执行confrim函数后取到一个值,使用ajax传入本php页面。原本写在confrim函数里,引用jquery后,onclick事件不执行了。我该怎么解决呢? 请大神们赐教
我是这么写的。modify函数只是点击后显示出text和button(ensure),再执行confirm函数。现在modify函数执行不了。怎么解决

参考技术A ajax请求的五个步骤如下
步骤如下五个步骤
1.创建异步对象,首先,创建一个XMLHttpRequest异步对象。
2.设置请求方式和地址,然后,设置请求方式和请求地址
3.用send发送请求,接着,用send发送请求。
4.监听状态变化,然后,监听状态变化。
5.接收返回的数据,最后,接收返回的数据
参考技术B //定义一个
var xmlHttp;
function createXMLHttpRequest()
if(window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
else if(window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");



function check()
//1.获取需要发送服务器的请求参数
var username = document.getElementById("username").value;

//2.创建XMLHttpRequest对象
createXMLHttpRequest();
//3.定义url,指定发送到服务器哪个文件
var url = "servlet/CheckServlet";
//4.打开连接,异步模式
xmlHttp.open("post", url, true);
//5.设置请求头信息
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//6.回调函数,接收服务器响应数据
xmlHttp.onreadystatechange = function ()
//8.接收服务器端的响应数据
//判断请求发送的状态和HTTP状态码
if(xmlHttp.readyState==4&&xmlHttp.status==200)
//9.接收响应数据
var text = xmlHttp.responseText;
alert(text);
//10.根据text的值确定在页面动态显示相应的信息
var msg_username = document.getElementById("msg_username");
if(text=="false")
msg_username.innerhtml="<font color='red'>否</font>";
document.getElementById("submit").disabled=true;
else
msg_username.innerHTML="<font color='green'>是</font>";
document.getElementById("submit").disabled=false;



//7.发送
xmlHttp.send("username="+username);
alert(username);
追问

这边不懂。请问这个放在哪儿呢?ajax的话,得调用一个jquery方法?我上面写的路径好像是无效的。里面没有方法。

如何使用 ajax 调用 aspx.vb 方法

【中文标题】如何使用 ajax 调用 aspx.vb 方法【英文标题】:how to call aspx.vb method using ajax 【发布时间】:2021-11-14 12:48:20 【问题描述】:

如何从 ajax 调用 vb.net 方法我将数组作为 ajax 中的参数发送,但它不起作用 这是ajax和javascript代码

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>   

        <script type="text/javascript">
                $("#Button1").click(function () 
                    var Years = document.getElementById("Options").querySelectorAll(".selected");
                   


                    $.ajax(
                        type: "POST",
                        url: "NewScenarioProfilePage.aspx/CalculateSum",
                        data: "'yearvalue ':'" + Years  +  "'",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: OnSuccess,
                        failure: function (response) 
                     ' this alert didn't show 
                            alert(response.d);
                        

                    );

                );

这是vb方法 P.s this yearvalue 如果超过 2 个值可能是一个数组,如果是一个值,它可能是一个整数变量

    <System.Web.Services.WebMethod()>
 
 Public Shared Function CalculateSum(ByVal yearvalue as Integer) As String
        MsgBox("calculate sum")

        Dim Result As Integer = yearvalue 
        Return Result.ToString()
    End Function

并且 msgbox 不会触发。 我不知道问题是什么。 这是我点击按钮时检查中的错误

jquery.min.js:4 POST https://localhost:44351/NewScenarioProfilePage.aspx/CalculateSum 401
send    @   jquery.min.js:4
ajax    @   jquery.min.js:4
(anonymous) @   NewScenarioProfilePage:477
dispatch    @   jquery.min.js:3
r.handle    @   jquery.min.js:3

【问题讨论】:

MsgBox 不能用于网页。我使用 XMLhttpRequest 来触发 ashx 处理程序。 【参考方案1】:

您收到了 401 状态代码作为响应。因此,您可能缺少身份验证机制。

【讨论】:

我将设置匿名身份验证设置为应用程序池标识。从这里 IIS -> 身份验证 -> 将匿名身份验证设置为应用程序池标识。仍然有同样的错误!【参考方案2】:

嗯,我认为你需要删除服务器端的 msgbox - 它会很长时间搞砸,因为 ajax 调用是异步的。

试试这个例子:

让我们放入两个文本框,一个按钮,然后从第一个文本框中获取值,通过函数运行它(例如,为了好玩,乘以 2)。

所以我们有这个服务器代码:

<System.Web.Services.WebMethod()>
Public Shared Function CalculateSum(ByVal yearvalue As Integer) As String

    Debug.Print("cal sum run!!")

    Dim Result As Integer = yearvalue * 2

    Return Result.ToString()

End Function

对于客户端呢?让我们不只是让 js 代码“坐”在那里 - 让我们调用一个例程,然后发布。

所以让我们加入一个标准的 asp.net 按钮 - 但请注意我们如何只使用该按钮 (onClientClick) 调用客户端代码。我们使用 return false 所以按钮不会回发。

    <div>
        Enter year:
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <br />
        <asp:Button ID="Button1" runat="server" Text="Test Ajax call"
            OnClientClick="mytest();return false"/>
        <br />
        Result ajax from server: <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </div>

    <script>
        function mytest() 

            myyear = $('#TextBox1').val()

            $.ajax(
                type: "POST",
                url: "AjaxTestFun.aspx/CalculateSum",
                data: JSON.stringify( yearvalue: myyear ),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (rData) 
                    // put results send back into TextBox2
                    $('#TextBox2').val("Result from server = " + rData.d)
                ,
                failure: function (rData) 
                    alert("error " + rData.d);
                
            );
        

    </script>

所以,输出现在看起来像这样:

所以,我使用了 debug.print。使用该日志或控制台日志,因为当您开始使用 ajax 调用时,服务器端的 msgbox 通常会伤害您。

如果当前网页工作正常,那么在 web 方法中折腾也可以工作(这不是身份验证问题)。

我还使用了 JSON.stringify。它“假定”第一个值是文本,第二个值可以是我使用的变量,例如 mymyear,或者您可以在引号下使用 '12335'。

因此,stringify 真的可以帮助世界贫困和苦难,因为您不必尝试连接一堆变量,以及一大堆单引号或双引号。

【讨论】:

谢谢我试过了,但还是有这个错误Failed to load resource: the server responded with a status of 404 () jquery.min.js:2 POST https://localhost:44351/AjaxTestFun.aspx/CalculateSum 404 send @ jquery.min.js:2 ajax @ jquery.min.js:2 mytest @ NewScenarioProfilePage:478 onclick @ NewScenarioProfilePage:233 是否有任何标准按钮表示您放到页面上的测试有效?这个web方法是在网页上,还是分开的?此外,当页面第一次加载时,按 ctrl-F5 强制重新加载浏览器缓存 - 由于缓存的 js 代码,我吹了一个下午。我假设 jQuery 正在工作? 嗯,您必须将 AjaxTestfun 更改为您的页面名称?也许您的页面名称不同? - 也许你创建了一个新的,但它确实需要你创建的网页的名称。 是的,我改了,但还是不行! 删除一个标准的 asp.net 按钮并在后面的代码中说一个 debug.print 是否有效?您是否尝试过在 web 方法例程中设置断点?那样有用吗?创建一个新的空白 Web 测试页。我在此处发布的示例有效吗?

以上是关于ajax如何使用?的主要内容,如果未能解决你的问题,请参考以下文章

ajax如何使用?

如何使用 ajax、查询、json 加载页面? [复制]

如何使用 jquery.ajax 正确管理 dataable.js

如何使用ajax加载部分

如何在ajax中使用django url?

如何使用 Typescript 进行 AJAX 请求? (使用 JSON)