ajax each html 太多,当用Ajax调用Foreach循环时只执行一次

博客讨论了一个PHP脚本,该脚本用于循环遍历textarea中的URL,检查数据库中的匹配项,并通过Ajax返回结果。问题在于,当使用Ajax调用时,脚本仅对textarea的第一行进行处理。解决方案可能涉及修改Ajax请求以处理textarea中的每一行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我试图用PHP循环访问一个textarea数组($ taskLinks),并检查每个新的行对数据库的匹配项并从数据库返回匹配项($ a) :当用Ajax调用Foreach循环时只执行一次

$a = array();

$array = split("\r\n", $taskLinks);

foreach($array as $url){

$query = "SELECT url FROM links

WHERE `url`

LIKE '$url'

AND `projectId` = '$projectId'";

$result = mysql_query($query);

$row = mysql_fetch_object ($result);

$matchedLink = $row->url;

array_push ($a,$matchedLink);

}

foreach ($a as $row){

echo "$row\r";

}

上述作品完美,但我尝试当用户添加到文本区域,然后返回从上面的任何比赛用AJAX调用它的PHP脚本(称为linkchecker.php)。为此,我在textarea上加上了onChange =“ajaxFunction()”。

ajaxRequest.onreadystatechange = function(){

if(ajaxRequest.readyState == 4){

var ajaxDisplay = document.getElementById('ajaxDiv');

ajaxDisplay.innerHTML = ajaxRequest.responseText;

document.myForm.time.value = ajaxRequest.responseText;

}

}

var taskLinks = document.getElementById('taskLinks').value;

var queryString = "?taskLinks=" + taskLinks + "&projectId=" + projectId;

ajaxRequest.open("GET", "linkchecker.php" + queryString, true);

ajaxRequest.send(null);

}

的问题是PHP脚本似乎只能当一个行被添加到textarea的工作 - 变量被传递到脚本中的查询字符串和PHP脚本的工作,但只针对第一行中的textarea - 我需要它像通常那样为多条线路工作。

我可以对AJAX做些什么以确保PHP脚本检查textarea中的每个条目?

+0

您可以创建一个通过每一行循环的功能在textarea中,并将这些数据传递给PHP脚本并根据响应执行所需的函数。 –

好的,我明白了,下面是对您的问题的回答: 首先,要实现增删改查功能,需要在SqlServer数据库中创建对应的表,并在后台ashx文件中编写对应的增删改查方法。以下是示例代码: ```csharp using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; namespace WebApplication1 { /// <summary> /// Handler 的摘要说明 /// </summary> public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string action = context.Request.QueryString["action"]; string result = ""; switch (action) { case "add": // 添加数据 result = AddData(context.Request.Form["name"], context.Request.Form["age"], context.Request.Form["sex"]); break; case "delete": // 删除数据 result = DeleteData(context.Request.QueryString["id"]); break; case "update": // 更新数据 result = UpdateData(context.Request.Form["id"], context.Request.Form["name"], context.Request.Form["age"], context.Request.Form["sex"]); break; case "query": // 查询数据 result = QueryData(); break; default: break; } context.Response.Write(result); } public bool IsReusable { get { return false; } } // 添加数据 private string AddData(string name, string age, string sex) { string connectionString = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "INSERT INTO UserInfo (Name, Age, Sex) VALUES (@Name, @Age, @Sex)"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); cmd.Parameters.AddWithValue("@Sex", sex); int result = cmd.ExecuteNonQuery(); if (result > 0) { return "添加成功!"; } else { return "添加失败!"; } } } } // 删除数据 private string DeleteData(string id) { string connectionString = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "DELETE FROM UserInfo WHERE Id = @Id"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@Id", id); int result = cmd.ExecuteNonQuery(); if (result > 0) { return "删除成功!"; } else { return "删除失败!"; } } } } // 更新数据 private string UpdateData(string id, string name, string age, string sex) { string connectionString = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "UPDATE UserInfo SET Name = @Name, Age = @Age, Sex = @Sex WHERE Id = @Id"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@Id", id); cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); cmd.Parameters.AddWithValue("@Sex", sex); int result = cmd.ExecuteNonQuery(); if (result > 0) { return "修改成功!"; } else { return "修改失败!"; } } } } // 查询数据 private string QueryData() { string connectionString = ConfigurationManager.ConnectionStrings["SqlServer"].ConnectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "SELECT * FROM UserInfo"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { DataTable dataTable = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataTable); string jsonStr = DataTableToJson(dataTable); return jsonStr; } } } // DataTable转换为JSON字符串 private string DataTableToJson(DataTable table) { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); List<Dictionary<string, object>> list = new List<Dictionary<string, object>>(); foreach (DataRow dataRow in table.Rows) { Dictionary<string, object> dict = new Dictionary<string, object>(); foreach (DataColumn column in table.Columns) { dict[column.ColumnName] = dataRow[column]; } list.Add(dict); } return jss.Serialize(list); } } } ``` 接下来,需要在html中编写前端页面,使用jquery库来调用服务端的ashx方法,实现增删改查功能。以下是示例代码: ```html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script src="Scripts/jquery-1.11.1.min.js"></script> <script> $(document).ready(function () { loadData(); $("#btnAdd").click(function () { var name = $("#txtName").val(); var age = $("#txtAge").val(); var sex = $("#selSex").val(); $.ajax({ type: "POST", url: "Handler.ashx?action=add", data: { "name": name, "age": age, "sex": sex }, dataType: "text", success: function (data) { alert(data); loadData(); }, error: function (err) { alert(err); } }); }); $("#btnUpdate").click(function () { var id = $("#txtId").val(); var name = $("#txtName").val(); var age = $("#txtAge").val(); var sex = $("#selSex").val(); $.ajax({ type: "POST", url: "Handler.ashx?action=update", data: { "id": id, "name": name, "age": age, "sex": sex }, dataType: "text", success: function (data) { alert(data); loadData(); }, error: function (err) { alert(err); } }); }); $("#tbody").on("click", ".btnDelete", function () { var id = $(this).attr("data-id"); if (confirm("确定要删除该记录吗?")) { $.ajax({ type: "GET", url: "Handler.ashx?action=delete", data: { "id": id }, dataType: "text", success: function (data) { alert(data); loadData(); }, error: function (err) { alert(err); } }); } }); }); function loadData() { $.ajax({ type: "GET", url: "Handler.ashx?action=query", dataType: "json", success: function (data) { var tbody = $("#tbody"); tbody.empty(); $.each(data, function (index, item) { var tr = $("<tr>"); var tdId = $("<td>").html(item.Id); var tdName = $("<td>").html(item.Name); var tdAge = $("<td>").html(item.Age); var tdSex = $("<td>").html(item.Sex); var tdOperate = $("<td>").html("<a href='#' class='btnDelete' data-id='" + item.Id + "'>删除</a>"); tr.append(tdId).append(tdName).append(tdAge).append(tdSex).append(tdOperate); tbody.append(tr); }); }, error: function (err) { alert(err); } }); } </script> </head> <body> <table border="1"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>操作</th> </tr> </thead> <tbody id="tbody"> </tbody> </table> <div style="margin-top: 20px;"> <input type="hidden" id="txtId" /> <input type="text" id="txtName" placeholder="姓名" /> <input type="text" id="txtAge" placeholder="年龄" /> <select id="selSex"> <option value="男">男</option> <option value="女">女</option> </select> <button id="btnAdd">添加</button> <button id="btnUpdate">修改</button> </div> </body> </html> ``` 这样,一个使用ajax实现增删改查的前后端页面就完成了。如果需要修改数据库连接字符串,只需要在Web.config中修改即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值