将字符串参数传递给 JavaScript 函数
Passing a string argument to a javascript function
我多次测试了以下代码。它运行良好,我得到了"返回photoMenu_sb"的结果。ToString();" 一旦我删除字符串参数 photoFileName。但是当我声明并尝试传递字符串照片文件名时,没有任何反应。为什么?
我认为问题在于声明字符串 photoFileName 并将其传递给 javascript 函数,但我无法识别问题,因为我没有收到任何错误。某处是否有任何遗漏的报价?
[WebMethod]
public static string LoadPhotosPopup(int offset, int fetch, string IDuserInput)
{
StringBuilder photosPopup_sb = new StringBuilder();
var photosPopup_query = db.Query("SELECT IDphoto], [photoFileName] FROM [photos] WHERE ([IDuser] = @0 AND [photoPublished] = 'True') ORDER BY [photoDate] DESC OFFSET @1 ROWS FETCH NEXT @2 ROWS ONLY", IDuserInput, offset, fetch);
foreach (var item in photosPopup_query)
{
var IDphoto = item.IDphoto;
var photoFileName = item.photoFileName;
photosPopup_sb.Append("<img src='"Images/Design/openmenu.png'" onclick='"photoMenu(" + IDphoto + ", '" + photoFileName + "') '" />");
}
return photosPopup_sb.ToString();
}
JavaScript
function photoMenu(IDphoto, photoFileName) {
$.ajax({
type: "POST",
url: "UserControls/photosFunctions.aspx/photoMenu",
data: "{ IDphoto: " + IDphoto + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#CommentsMenu" + IDphoto).html(data.d);
}
})
}
[WebMethod]
{ StringBuilder photoMenu_sb = new StringBuilder();
photoMenu_sb.Append("<label>Testing </label>");
return photoMenu_sb.ToString();
}
更新由于公共静态字符串照片菜单(int IDphoto,字符串照片文件名)期望 2 个参数然后
data: "{ IDphoto: " + IDphoto + "}", in the javascript function should be
data: "{ IDphoto: " + IDphoto + ", photoFileName: '" + photoFileName + "'}",
尝试创建一个包含 javascript 函数字符串的字符串变量:
var img = String.Format("<img src='Images/Design/openmenu.png' onclick='photoMenu({0},'{1}')' />", item.IDphoto, item.photoFileName);
photosPopup_sb.Append(img);
在你的 JavaScript 中,你还需要为 photofileName 参数设置 json data 属性:
function photoMenu(IDphoto, photoFileName) {
$.ajax({
type: "POST",
url: "UserControls/photosFunctions.aspx/photoMenu",
data: "{ IDphoto: " + IDphoto + ", photoFileName: '" + photoFileName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#CommentsMenu" + IDphoto).html(data.d);
}
});
}
我认为你缺少一个括号")":
photosPopup_sb.Append("<img src='"Images/Design/openmenu.png'" onclick='"photoMenu(" + IDphoto + ", '" + photoFileName + "')'" />");
我没有看到您的photoFileName
的示例值,但如果它有反斜杠,您可能必须确保字符串正确转义。
例如:
//causes errors
called(1, 'file'path'img.png');
//successful
called(1, 'file/path/img.png');
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别