这是使用ASP.NET Web .NET 2.0 -
我有一个情况,我不知道如何满足所有的要求。如果选择是从同一页的下拉列表中进行的,我需要更新页面上的img源代码。
基本上,跌落是该项目的“选项”。如果做出了选择(即颜色:红色),那么如果存在,我会将产品的img更新为类似(productID_red.jpeg)的内容。
问题是,我不想每次做出选择时都回发并刷新页面--尤其是如果我在将img替换为该产品之前检查图像是否存在,而该文件不存在,所以我只是将整个页面刷新为零。
问题:
因此,我很容易地将一些javascript放在一起,根据所选的选项来制定图像文件名的字符串。我的问题是,我要做以下几个选择:
有什么建议吗?
发布于 2011-02-23 14:10:05
将构造的图像名称(即productID_red_large.jpg)提交给一些将验证文件是否存在于C#中或是否可能存在于javascript中的文件的地方。我还必须检查不同的文件类型(即.png、.jpg...etc.)。 不回发并刷新整个页面
如果您不想回发到页面,您将需要查看$.ajax()或$.post() (这只是$.ajax()的一些默认选项的缩写)。
要处理该请求,可以使用通用Http Handler。
一个简单的大纲可以如下所示:
文章的jQuery示例:
$("someButton").click(function () {
//Get the image name
var imageToCheck = $("#imgFileName").val();
//construct the data to send to the handler
var dataToSend = {
fileName: imageToCheck
};
$.post("/somePath/ValidateImage.ashx", dataToSend, function (data) {
if (data === "valid") {
//Do something
} else {
//Handle error
}
}, "html");
})然后,在您的asp.net端,您将创建一个http处理程序来验证该请求。
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var fileName = context.Request["fileName"];
var fullPath = Path.Combine("SomeLocalPath", fileName);
//Do something to validate the file
if (File.Exists(fullPath))
{
context.Response.Write("valid");
}
else
{
context.Response.Write("invalid");
}
}
public bool IsReusable
{
get
{
return false;
}
}
}希望这对我有帮助,如果我在这一点上完全失手了,让我知道,我可以修改。
发布于 2011-02-23 14:24:12
我们有一个相同类型的应用程序,webforms .net 2,我们使用以下设置执行类似的操作:
使用jQuery,您可以在当前页面后面的页面中调用一个方法,例如,下面的代码将在名为selectBoxName的复选框更改时触发AJAX调用,因此您的代码在这里计算出图像名并将其发送到服务器。
$(document).ready(function () {
$('#selectBoxName').change(function (event) {
var image_name = 'calculated image name';
$.ajax({
type: "POST",
url: 'SomePage.aspx/CheckImageName',
data: "{'imageName': '" + image_name + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg);
},
error: function (a, b, c) {
alert("The image could not be loaded.");
}
});
});
});其中SomePage.aspx是当前的页面名,image_name中填充了您已经计算出来的名称。您可以在成功和错误消息中替换img,再次使用jQuery。
然后,该页面后面的代码将有一个类似于下面的方法,如果需要的话,您只需将true/fase或正确的图像路径作为字符串。您甚至可以返回更复杂的类型/对象,它将自动返回正确的JSON resposne。
[System.Web.Services.WebMethod(true)]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public static bool CheckImageName(string imageName)
{
/*
* Do some logic to check the file
if (file exists)
return true;
return false;
*/
}由于它是.net 2应用程序,您可能需要安装AJAX扩展:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en
发布于 2011-02-24 06:42:21
您能不能不对图像的物理路径使用普通的ajax调用并检查它是否返回404?
Like this:
http://stackoverflow.com/questions/333634/http-head-request-in-javascript-ajax
<script type="text/javascript">
function UrlExists(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status != 404;
}
function ConstructImage() {
var e = document.getElementById("opt");
var url = '[yourpath]/' + e.value + '.jpg';
if (!UrlExists(url)) {
alert('doesnt exists');
//do stuff if doesnt exist
} else {
alert('exists');
//change img if it does
}
}
</script>
<select id="opt" onchange="ConstructImage()">
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
</select>https://stackoverflow.com/questions/5091211
复制相似问题