Jquery Ajax 数据方法正在将 div 更改为文本输入字段
Jquery Ajax data method is changing a div to a text input field
我正在使用 ajax 将表单数据(由多个文本字段和一个文件上传组成)发送到 php 以将其插入到 sqldb 中。该脚本发回一个 json 编码数组,其中包含两个文本字段的数据,标题和地址;以及数组调用 ad_link 的上传文件的完整 URL。
Jquery Ajax 使用此数据根据 class 名称填充一些 div 元素。这些值被放入 div 元素中。
但是,它使 div 元素看起来像文本字段(就像最初用于发送值的表单中的元素一样)。我已经检查了 classes 以确保所有内容都正确匹配并且它们对于各自的功能是唯一的。此页面使用 bootstrap 和 jquery。我该如何解决或解决这个问题?
<body>
<!--Form-->
<form name="data-form" class="data-form" method="post" action="add-list.php" enctype="multipart/form-data">
<fieldset >
<input class="fileUpload" name="flyer" type="file" />
</fieldset>
<textarea name="title" id="title"></textarea>
<textarea name="address" id="address"></textarea>
<button id="nxtbutttwo" class="btn btn-primary avatar-save" type="submit">Save Listing</button>
</form>
<!--Elements to populate upon ajax success-->
<div class="aadded_display">
<ul>
<li>
<div><a class="aad_link" href="" target="_blank">
<div class="atitle"></div>
</a></div>
</li>
<li>
<div class="aaddress"></div>
</li>
</ul>
</div>
<!--Jquery Ajax-->
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
$("document").ready(function() {
$(".data-form").submit(function() {
data = $(this).serialize();
if (confirm("good?")) {
$.ajax({
type: "POST",
dataType: "json",
url: "add-list.php",
data: data,
success: function(response) {
if (response.success) {
$("#modal1").modal('hide');
$(".aadded_display").show();
$(".atitle").html(title);
$(".aadress").html(adress);
$("a.aad_link").html(ad_link);
}
else {
console.log("An error has ocurred: sentence: " + response.sentence + "error: " + response.error);
}
},
error: function() {
alert("An Error has ocurred contacting the server. Please contact your system administrator");
}
});
return false;
}
});
});
</script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
</body>
来自 ajax 请求的响应保存在 response
object 中,您用它来检查是否成功但不用于填充 div。
$(".atitle").html(response.title);
$(".aadress").html(response.adress);
$("a.aad_link").html(response.ad_link);
对于 div 中的文本框,出现这种情况是因为某些浏览器使用其 ID 为 dom 中的元素创建全局变量,因此 title
是标题文本区域,您将它的副本放在 .atitle
div.
我正在使用 ajax 将表单数据(由多个文本字段和一个文件上传组成)发送到 php 以将其插入到 sqldb 中。该脚本发回一个 json 编码数组,其中包含两个文本字段的数据,标题和地址;以及数组调用 ad_link 的上传文件的完整 URL。
Jquery Ajax 使用此数据根据 class 名称填充一些 div 元素。这些值被放入 div 元素中。
但是,它使 div 元素看起来像文本字段(就像最初用于发送值的表单中的元素一样)。我已经检查了 classes 以确保所有内容都正确匹配并且它们对于各自的功能是唯一的。此页面使用 bootstrap 和 jquery。我该如何解决或解决这个问题?
<body>
<!--Form-->
<form name="data-form" class="data-form" method="post" action="add-list.php" enctype="multipart/form-data">
<fieldset >
<input class="fileUpload" name="flyer" type="file" />
</fieldset>
<textarea name="title" id="title"></textarea>
<textarea name="address" id="address"></textarea>
<button id="nxtbutttwo" class="btn btn-primary avatar-save" type="submit">Save Listing</button>
</form>
<!--Elements to populate upon ajax success-->
<div class="aadded_display">
<ul>
<li>
<div><a class="aad_link" href="" target="_blank">
<div class="atitle"></div>
</a></div>
</li>
<li>
<div class="aaddress"></div>
</li>
</ul>
</div>
<!--Jquery Ajax-->
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
$("document").ready(function() {
$(".data-form").submit(function() {
data = $(this).serialize();
if (confirm("good?")) {
$.ajax({
type: "POST",
dataType: "json",
url: "add-list.php",
data: data,
success: function(response) {
if (response.success) {
$("#modal1").modal('hide');
$(".aadded_display").show();
$(".atitle").html(title);
$(".aadress").html(adress);
$("a.aad_link").html(ad_link);
}
else {
console.log("An error has ocurred: sentence: " + response.sentence + "error: " + response.error);
}
},
error: function() {
alert("An Error has ocurred contacting the server. Please contact your system administrator");
}
});
return false;
}
});
});
</script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
</body>
来自 ajax 请求的响应保存在 response
object 中,您用它来检查是否成功但不用于填充 div。
$(".atitle").html(response.title);
$(".aadress").html(response.adress);
$("a.aad_link").html(response.ad_link);
对于 div 中的文本框,出现这种情况是因为某些浏览器使用其 ID 为 dom 中的元素创建全局变量,因此 title
是标题文本区域,您将它的副本放在 .atitle
div.