Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何调用具有动态数据的onclick jquery函数,Asp.net Mvc5_Javascript_Jquery_Ajax_Asp.net Mvc_Razor - Fatal编程技术网

Javascript 如何调用具有动态数据的onclick jquery函数,Asp.net Mvc5

Javascript 如何调用具有动态数据的onclick jquery函数,Asp.net Mvc5,javascript,jquery,ajax,asp.net-mvc,razor,Javascript,Jquery,Ajax,Asp.net Mvc,Razor,我正在为每个循环加载使用的包,显然是从代码 <div class="row"> @foreach(var items in ViewBag.packages) { <div class="col-md-2"> <div class="price-table-area"> <div class="fixed-img sec-bg5"></div> &

我正在为每个循环加载使用的包,显然是从代码

<div class="row">             
  @foreach(var items in ViewBag.packages)
  {  
    <div class="col-md-2">
      <div class="price-table-area">
        <div class="fixed-img sec-bg5"></div>
        <ul class="proce-table">
          <li class="price-prdct"><i>$</i>@items.NewPrice<i>/m</i></li>
          <input type="submit" class="submit" value="SignUp" onclick="packageSelect(@ViewBag.PackageId)">
        </ul>
      </div>
    </div>
  }
</div>
剧本

<script>
  function packageSelect(PackageId) {
    $.ajax({
      type: "POST",
      url: '@Url.Action("SelectPackage", "Home")',
      dataType: "JSon",
      data: { "PackageId": PackageId },
      success: function (data) {
        console.log(data);
        // $("#SecondInfo").focus({ scrollTop: "0px" });
        $('html, body').animate({ scrollTop: $('#contact-us').offset().top }, 'slow');
      },
      error: console.log("it did not work"),
    });
  };
</script>

功能包选择(PackageId){
$.ajax({
类型:“POST”,
url:'@url.Action(“SelectPackage”,“Home”),
数据类型:“JSon”,
数据:{“PackageId”:PackageId},
成功:功能(数据){
控制台日志(数据);
//$(“#SecondInfo”).focus({scrollTop:“0px”});
$('html,body').animate({scrollTop:$('#contact-us').offset().top},'slow');
},
错误:console.log(“它不工作”),
});
};

这样称呼对吗?问题在于未调用函数。

您的输入是
submit
类型将其类型更改为
按钮。因此,当您单击按钮时,
表单
将被
发布
onclick
将不会
触发

<input type="button" class="submit" value="SignUp"
                            onclick="packageSelect(@ViewBag.PackageId)">

为什么需要将PackageId值从ViewBag传递到函数packageSelect?如果您只是使用ajax调用将值传递给contoller action,那么我认为可以在ViewBag的action方法中直接访问它


如果您正在对另一个控制器操作进行ajax调用,则可以使用TempData collection来存储PackageId。

我认为click不会以这种方式接受参数。试一试

<input type="submit" class="submit" value="SignUp"
      onclick="function(){packageSelect(@ViewBag.PackageId);}">


我也同意Mairaj的说法,即class='submit'是可疑的。

非常严肃地说,我认为这不是一个好的方法

相反,你应该更清楚地接近它-

使用
数据
属性

注册

然后-

$('button').on('click',function(){
    var id = $(this).data('id'); //attribute's value
    packageSelect(id); //passing the value to function
});
p.S.- 我还假设您正在迭代id,如果是,那么您不应该将其用作-

@ViewBag.PackageId

它应该是(如果它正在迭代并且不会保持不变)-

@items.PackageId

您不需要在foreach前面放一个@吗?这是你文章中的一个拼写错误吗?现在使用它并避免用行为污染你的分数要好得多。将
PackageId
添加为
data-
属性,并使用
$('.yourClassName')。单击(function(){var id=$(this).data('PackageId');…})@SuhailMumtazAwan,你最后一次回应我的评论是什么?(不知道你指的是什么)。正如其他人所指出的,您需要将输入更改为带有
type=“button”
的按钮,或者包括
返回false或ajax调用和正常提交都将occur@SuhailMumtazAwan,您注意到您的错误为500。这通常是服务器上引发异常(或指定错误的
数据类型)的结果。您可以使用浏览器工具(网络选项卡)检查详细信息)@SuhailMumtazAwan,如果您使用jqueryv1.9+那么
返回Json(string.Empty)
可能会引发该异常。通过使用(比如)返回Json(“成功”)来测试这一点submit
按钮将发布表单并尝试更改其类型,然后进行检查。我已将submit type更改为button,但没有任何效果检查您的浏览器控制台以查看错误是什么?我认为BJ的代码不会执行,因为在该代码
函数中没有
调用了
而一个新函数正在创建中,请试试我刚才说的。而
500
错误意味着您的
控制器方法中存在错误
。感谢您的回答,但我正在处理单页应用程序,并且已经调用了该操作3,4次。。。。。你不是这么认为的,我的问题是关于你在ajax调用中传递的参数,你为什么需要传递这个参数?请发布浏览器源代码中的HTML示例,以便我们可以看到生成的代码。我不确定你在问什么sirIn chrome,转到开发人员工具,然后在页面中右键单击输入按钮并从菜单中选择检查。在开发工具窗口中,它将显示HTML。复制它并向我们显示浏览器实际接收到的内容。另外,您确定没有意外地键入括号而不是大括号吗?
onclick=“function(){packageSelect(@ViewBag.PackageId);}
这不起作用,因为你不是在调用函数,而是在定义一个函数。很好!我想这是另一种选择,但我在iPad上,在iPad上编辑代码真的是sux。另外,我不知道jQuery自动将数据属性拉入数据()收藏。我总是使用.attr()来获取它们。谢谢你更新我!@Manoz我真的对那个错误失去了理智,,,,,,谢谢你的回答,也很抱歉因为网络问题而延迟接受,,,cheers@SuhailMumtazAwan,np,干杯!
$('button').on('click',function(){
    var id = $(this).data('id'); //attribute's value
    packageSelect(id); //passing the value to function
});