কোডবিহাইড থেকে জাভাস্ক্রিপ্ট ফাংশন কল করা


150

কোডবিহাইড এবং তদ্বিপরীত থেকে কেউ কি জাভাস্ক্রিপ্ট ফাংশন কল করার ভাল উদাহরণ সরবরাহ করতে পারেন?


বিস্তারিত নিবন্ধের codepedia.info/... সঙ্গে ছাড়া আয়াক্স আপডেট প্যানেল ব্যবহার
Satinder সিং

উত্তর:


206

আপনি এটি চেষ্টা করতে পারেন:

Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","MyFunction()",true);

41
আমি স্ক্রিপ্ট ম্যানেজ.আরজিস্টার স্টার্টআপস্ক্রিপ্ট (পৃষ্ঠা, টাইপফ (পৃষ্ঠা), "সামকি", লিপি, সত্য) যাব; কাছে। এটি আংশিক পোস্টব্যাকগুলির সময়ও কাজ করে।
rdmittedn

10
1. কখনও কখনও তথ্যের জন্য এই পোস্টটিPage.ClientScript.RegisterClientScriptBlock পরিবর্তে প্রয়োজন হয় । ২. এটি উল্লেখ করার মতো হতে পারে যে মাই ফাংশন () এর কাজ করার জন্য, মাই ফাংশন () ফর্ম ট্যাগগুলির আগে বা তার ভিতরে বাছাই করতে হবে তবে </ translation> শেষের ট্যাগের পরে নয় (অন্যথায় কোনও প্রত্যাশিত প্রত্যাশিত ত্রুটি ঘটবে) ঘটবে)
22:53

2
ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);কাজ করে। this.GetType()আমার জন্য একটি ত্রুটি নিক্ষেপ।
সার্চফোরকনলজ

2
কোডটি কোনও দিয়ে মোড়ানো asp:UpdatePanelএবং একটি বোতাম ইভেন্টে লিখিত হলে এটি কাজ করে না । যার ফলে পৃষ্ঠাটি পোস্টব্যাক হয়।
সেনুরা ডিসানায়াকে

52

সি # জাভাস্ক্রিপ্ট থেকে: আপনি নীচের মত পৃষ্ঠাতে চালনার জন্য স্ক্রিপ্ট ব্লকটি নিবন্ধন করতে পারেন:

ClientScript.RegisterStartupScript(GetType(),"hwa","alert('Hello World');",true);

alert()আপনার ফাংশন নামের সাথে অংশ প্রতিস্থাপন ।

জাভাস্ক্রিপ্ট থেকে সি # পদ্ধতি কল করার জন্য আপনি ScriptManagerবা ব্যবহার করতে পারেন jQuery। আমি ব্যক্তিগতভাবে ব্যবহার jQuery। আপনি জাভাস্ক্রিপ্ট থেকে WebMethodবৈশিষ্ট্য সহ কল ​​করতে চান সেই পদ্ধতিটি আপনাকে সাজাতে হবে। C # পদ্ধতি (কল করা PageMethod) থেকে কলিং সম্পর্কিত আরও তথ্যের জন্য jQueryআপনি ডেভ ওয়ার্ডের পোস্টটি পড়তে পারেন ।


51

পিছনে কোড থেকে একটি জাভাস্ক্রিপ্ট ফাংশন কল করা

পদক্ষেপ 1 আপনার জাভাস্ক্রিপ্ট কোড যুক্ত করুন

<script type="text/javascript" language="javascript">
    function Func() {
        alert("hello!")
    }
</script>

পদক্ষেপ 2 1 যোগ করুন স্ক্রিপ্ট ম্যানেজার আপনার ওয়েব-ফর্ম মধ্যে এবং 1 যোগ করুন বাটন খুব

পদক্ষেপ 3 আপনার বোতাম ক্লিক ইভেন্টে এই কোড যুক্ত করুন

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);

যখন গ্রিডভিউ সারিটি ক্লিক করা হয় তখন এটি করার চেষ্টা করার সময়, এটি কেবলমাত্র অন্য উত্তরের মতো ScriptManagerনয়, এই উত্তর হিসাবে ব্যবহার করার সময় কাজ করে Page.ClientScriptasp:UpdatePanelগৃহীত উত্তরের অধীনে মন্তব্য সম্পর্কিত হতে পারে ।
ক্রিস

16

আপনি সরাসরি এটি করতে পারবেন না। স্ট্যান্ডার্ড ওয়েবফোর্মে জাভাস্ক্রিপ্ট ব্রাউজার দ্বারা ব্যাখ্যা করা হয় এবং সি # সার্ভার দ্বারা। জাভাস্ক্রিপ্ট ব্যবহার করে সার্ভার থেকে কোনও পদ্ধতিতে কল করতে আপনি যা করতে পারেন তা হ'ল।

  • লক্ষ্য পদ্ধতি WebMethodহিসাবে ব্যবহার করুন attribute
  • হিসাবে ScriptManagerসেটিং যুক্ত করুনEnablePageMethodstrue
  • জাভাস্ক্রিপ্ট কোড যুক্ত করুন অবজেক্টের মাধ্যমে পদ্ধতিগুলি কল করার জন্য PageMethods

এটার মত:

ধাপ 1

public partial class Products : System.Web.UI.Page 
{ 
    [System.Web.Services.WebMethod()] 
    [System.Web.Script.Services.ScriptMethod()] 
    public static List<Product> GetProducts(int cateogryID) 
    {
        // Put your logic here to get the Product list 
    }

ধাপ 2: একটি যোগ করার পদ্ধতি ScriptManagerউপরPage

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />

পদক্ষেপ 3: জাভাস্ক্রিপ্ট ব্যবহার করে পদ্ধতিটি কল করা

function GetProductsByCategoryID(categoryID)
{
    PageMethods.GetProducts(categoryID, OnGetProductsComplete);
}

এই লিঙ্কটি একবার দেখুন।

সার্ভার থেকে একটি জাভাস্ক্রিপ্ট ফাংশন কল করতে আপনি ব্যবহার করতে পারেন RegisterStartupScript:

ClientScript.RegisterStartupScript(GetType(),"id","callMyJSFunction()",true);

আপনি এমভিসি 3 ফাইল শ্রেণিবিন্যাসের প্রথম ধাপটি কোথায় রাখবেন?
রব

@ রব GetProducts()ফাংশনটি কেবল একটি কোড-পেছনের ফাংশন যা কোনও এমভিসি অ্যাপ্লিকেশনটিতে একটি নিয়ামক হিসাবে বাস করবে, তাই আপনি জাভাস্ক্রিপ্ট থেকে কল করতে চান এমন একটি নিয়ন্ত্রণকারীর মধ্যে আপনি যে ফাংশনটি রাখতে চান তা উপরে ট্যাগগুলি রেখে যায় so ।
vapcguy

15

আপনার যদি প্রয়োজন হয় প্যারামিটার হিসাবে একটি মান প্রেরণ।

string jsFunc = "myFunc(" + MyBackValue + ")";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "myJsFn", jsFunc, true);

8

আপনি যা করতে পারেন তা হ'ল একটি সেশন ভেরিয়েবল তৈরি করা যা পিছনের কোডটিতে সেট হয়ে যায় এবং তারপরে সেই ভেরিয়েবলের অবস্থা পরীক্ষা করে তারপরে আপনার জাভাস্ক্রিপ্ট চালানো হয়। ভাল জিনিস এটি আপনার স্ক্রিপ্টটি ডম বা বিশ্বব্যাপী চালাতে চান কিনা তা নির্ধারণের পরিবর্তে আপনি যেখানে চান সেখানে চালানোর অনুমতি দেবে।

এর মতো কিছু: পিছনে কোড:

Session["newuser"] = "false" 

জাভাস্ক্রিপ্টে

var newuser = '<%=Session["newuser"]%>';
 if (newuser == "yes")
     startTutorial();  

7

তুমি পার না. কোডবিহাইন্ড সার্ভারে চলছে যখন জাভাস্ক্রিপ্ট ক্লায়েন্টে চলছে।

তবে, আপনি <script type="text/javascript">someFunction();</script>আপনার আউটপুটটিতে যুক্ত করতে পারেন এবং যখন ব্রাউজারটি আপনার মার্কআপটিকে বিশ্লেষণ করে তখন জেএস ফাংশনটি ডেকে আনতে পারে।


65
"আপনি পারবেন না। তবে আপনি এটি কিভাবে করবেন তা এখানে here"

3
সার্ভার-সাইড কোড থেকে কোনও পদ্ধতি কল করার বিষয়টি আমি বিবেচনা করব না যেহেতু আপনার কাছে কোনও ফেরতের মান পাওয়ার বা কলব্যাক নির্দিষ্ট করার কোনও উপায় নেই।
চোরমাস্টার

8
ওহ, নিশ্চিত আপনি পারবেন। আপনি আপনার জাভাস্ক্রিপ্ট থেকে কোনও পোস্টব্যাক বা এজেএক্সের পিছনে যে কোনও কিছু কল করতে পারেন। আমি মনে করেছিলাম এটা মজা ছিল; আমি একই কাজ করার প্রবণতা রেখেছি - "না, এটি অসম্ভব। কেউ যদি এমনটা করতে পারে তবে তা করতেও চাইবে না।" তারপরে কয়েক মিনিট পরে "সুতরাং আমরা কীভাবে এটি করতে চলেছি তা এখানে।"

7

আপনি আক্ষরিক ব্যবহার করতে পারেন:

this.Controls.Add(new LiteralControl("<script type='text/javascript'>myFunction();</script>"));

1
কিন্তু এটি কেবল মেমরিতে কোনও স্ক্রিপ্ট যুক্ত করে না, এটি আসলে এটিও চালায় না?
Fandango68

5

আইআইআরসি কোড বিহাইন্ড সার্ভারসাইড সংকলিত এবং জাভাস্ক্রিপ্ট ক্লায়েন্ট পাশ ব্যাখ্যা করা হয়। এর অর্থ উভয়ের মধ্যে কোনও সরাসরি যোগসূত্র নেই।

আপনি অন্যদিকে যা করতে পারেন তা হ'ল ক্লায়েন্ট এবং সার্ভারের সাথে আজেএক্স নামে একটি নিফটি সরঞ্জামের মাধ্যমে যোগাযোগ করা যায়। http://en.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML


5

পিছনে কোড এ এটি চেষ্টা করুন এবং এটি 100% কাজ করবে

আপনার কোডের এই লাইনটি ফাইলের পিছনে কোড লিখুন

string script = "window.onload = function() { YourJavaScriptFunctionName(); };";
ClientScript.RegisterStartupScript(this.GetType(), "YourJavaScriptFunctionName", script, true);

এবং এটি ওয়েব ফর্ম পৃষ্ঠা

<script type="text/javascript">
    function YourJavaScriptFunctionName() {
        alert("Test!")
    }
</script>


4

কাজের উদাহরণ: _

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage2.Master" AutoEventWireup="true" CodeBehind="History.aspx.cs" Inherits="NAMESPACE_Web.History1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>


 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 

        <script type="text/javascript">

            function helloFromCodeBehind() {
                alert("hello!")
            }


        </script>

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

 <div id="container"  ></div>

</asp:Content>

পিছনে কোড

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace NAMESPACE_Web
{
    public partial class History1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "helloFromCodeBehind()", true);
        }

    }
}

সম্ভাব্য সমস্যাগুলি: -

  1. কোড এবং এইচটিএমএল একই নামস্থানে নাও থাকতে পারে
  2. CodeBehind="History.aspx.cs" ভুল পৃষ্ঠায় নির্দেশ করছে
  3. জেএস ফাংশনে কিছু ত্রুটি হচ্ছে

3

আমি এখানে প্রচুর উত্তর ব্যবহার করছি ScriptManager.RegisterStartupScriptএবং আপনি যদি এটি করতে যাচ্ছেন তা লক্ষ্য করছি, এটি করার সঠিক উপায় নয়। সঠিক উপায়টি ব্যবহার করাScriptManager.RegisterScriptBlock([my list of args here]) । কারণ হ'ল আপনি কেবল তখনই RegisterStartupScript ব্যবহার করা উচিত যখন আপনার পৃষ্ঠাটি লোড হয় (সুতরাং নামটি RegisterStartupScript)।

ভিবি.নেটে:

ScriptManager.RegisterClientScriptBlock(Page, GetType(String), "myScriptName" + key, $"myFunctionName({someJavascriptObject})", True)

সি # তে:

ScriptManager.RegisterClientScriptBlock(Page, typeof(string), "myScriptName" + key, $"myFunctionName({someJavascriptObject})", true);

অবশ্যই, আমি আশা করি এটি বলার অপেক্ষা রাখে না যে আপনাকে আপনার কী সনাক্তকারী দিয়ে কীটি প্রতিস্থাপন করতে হবে এবং সম্ভবত এটি সমস্ত একটি সাব / ফাংশন / পদ্ধতিতে স্থানান্তরিত করা উচিত এবং কী এবং কিছু জাভাস্ক্রিপ্টঅবজেক্টে পাস করা উচিত (যদি আপনার জাভাস্ক্রিপ্ট পদ্ধতির প্রয়োজন হয় যে আপনার আর্গ একটি জাভাস্ক্রিপ্ট অবজেক্ট)।

এমএসডিএন ডক্স:

https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx


3
ScriptManager.RegisterStartupScript(Page, GetType(), "JavaFunction", "AlertError();", true);

আপনার ফাংশন ব্যবহার যথেষ্ট


2
আপনি কি আপনার উত্তরটি আরও কিছুটা ব্যাখ্যা করতে পারেন?
ম্যাকপেজ

1
এই "জাভা ফাংশন" পরামিতিটি কী? আমরা কি এতে কিছু যুক্ত করতে পারি? এই যুক্তিতে কী দরকার?
সেনুরা ডিসানায়াকে

1
@ সেনুরাডিসানায়াকে এটি একটি শিরোনাম-হ্যাঁ, এটি কিছু হতে পারে এবং আসলেই কিছু যায় আসে না।
vapcguy

2

এইভাবে আমি এটি করেছি।

এইচটিএমএল চিহ্নিতকরণ নীচে লেবেল এবং বোতাম নিয়ন্ত্রণ দেখায়।

<body> 
  <form id="form1" runat="server"> 
  <div> 
    <asp:Label ID="lblJavaScript" runat="server" Text=""></asp:Label> 
    <asp:Button ID="btnShowDialogue" runat="server" Text="Show Dialogue" /> 
  </div> 
  </form> 
</body>

জাভাস্ক্রিপ্ট ফাংশন এখানে।

<head runat="server"> 
  <title>Calling javascript function from code behind example</title> 
  <script type="text/javascript"> 
    function showDialogue() { 
      alert("this dialogue has been invoked through codebehind."); 
    } 
  </script> 
</head>

জাভাস্ক্রিপ্ট ফাংশন ট্রিগার পিছনে কোড এখানে।

lblJavaScript.Text = "<script type='text/javascript'>showDialogue();</script>";


1

যেহেতু আমি একটি সমাধান যে কোড পেছনে, যা চেষ্টা অন্তর্ভুক্ত খুঁজে পাইনি ClientScriptএবংScriptManager mutanic এবং অরল্যান্ডো হেরেরা মত এই প্রশ্নের বলেন (তারা উভয় একরকম ব্যর্থ হয়েছে), আমি একটি ফ্রন্ট-এন্ড সমাধান যা অন্যদের যদি বাটন ক্লিক সদ্ব্যবহার অফার পাবেন তারা আমার মতো একই অবস্থানে আছে এটি আমার পক্ষে কাজ করেছে:

এইচটিএমএল মার্কআপ:

<asp:button ID="myButton" runat="server" Text="Submit" OnClientClick="return myFunction();"></asp:button>

javascript:

function myFunction() {
    // Your JavaScript code
    return false;
}

আমি কেবল একটি এএসপি.নেট বোতাম ব্যবহার করছি যা OnClientClickসম্পত্তিটি ব্যবহার করে যা ক্লায়েন্ট-সাইড স্ক্রিপ্টিং ফাংশনগুলিকে জ্বালিয়ে দেয় যা জাভাস্ক্রিপ্ট। এখানে মূল বিষয়গুলি লক্ষ্য করার জন্য হ'ল returnফাংশন কলে এবং ফাংশনে নিজেই কীওয়ার্ডটির ব্যবহার । আমি দস্তাবেজগুলি পড়েছি যা ব্যবহার করে না returnতবে তবুও কাজ করতে বোতামটি ক্লিক করতে পারে - কোনওভাবে এটি আমার পক্ষে কাজ করে না। return false;ফাংশনে বিবৃতি উল্লেখ করে একটি postback হওয়া উচিত নয়। আপনি OnClientClickসম্পত্তিটিতে এই বিবৃতিটি ব্যবহার করতে পারেন :OnClientClick="myFunction() return false;"


0

আমি কোড বিহাইন্ডে স্ক্রিপ্টম্যানেজার ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে।

ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "CallMyFunction", "confirm()", true);

আপনি যদি এএসপি ফ্রন্টএন্ডে আপডেটপ্যানেল ব্যবহার করেন। তারপরে, আপডেটপ্যানেলের নাম এবং স্ক্রিপ্ট ট্যাগগুলির সাথে সংজ্ঞায়িত 'ফাংশন নাম' লিখুন।


0

"লিকো" ধন্যবাদ, কেবল তার উত্তরে একটি মন্তব্য যুক্ত করুন।

string jsFunc = "myFunc(" + MyBackValue + ")";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "myJsFn", jsFunc, true);

'পরিবর্তনশীলটিতে একক উদ্ধৃতি ( ) যুক্ত করা হয়েছে, অন্যথায় এটি ত্রুটির বার্তা দেবে:

string jsFunc = "myFunc('" + MyBackValue + "')";

-1

আপনি কোডবিহাইন্ড থেকে জাভাস্ক্রিপ্ট ফাংশন কল করতে পারবেন না, কারণ কোডবিহাইন্ড ফাইলে এমন একটি কোড রয়েছে যা ওয়েব সার্ভারে সার্ভার সাইড চালায়। জাভাস্ক্রিপ্ট কোড ক্লায়েন্ট পক্ষের ওয়েব ব্রাউজারে কার্যকর করে।


1
আপনি আমার কুল জাভাস্ক্রিপ্ট ফাংশন (জাভাস্ক্রিপ্ট ফাংশনআর্গস) এর মতো সরাসরি জাভাস্ক্রিপ্ট ফাংশন কল করতে পারবেন না; সার্ভারে, তবে আপনি ওয়েবফোর্ড পৃষ্ঠায় পিছনে কোড থেকে জাভাস্ক্রিপ্ট ফাংশন কল করতে পারেন।
cr1pto

ক্লাউডস্ট্রাইফ্রো
খুররম ইসহাক

-1

স্ক্রিপ্টমেথোদ অ্যাট্রিবিউটটি ব্যবহার করে জাভাস্ক্রিপ্টের মাধ্যমে কল করার জন্য কোডবিহীন পৃষ্ঠাগুলিতে আপনি সি # পদ্ধতি প্রকাশ করতে পারেন

আপনি কোডবিহাইন্ড থেকে জাভাস্ক্রিপ্ট কল করতে পারবেন না - এই কোডটি কেবল ক্লায়েন্টের মধ্যেই বিদ্যমান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.