আপনি কীভাবে কোনও আইফ্রেমে ডেটা পোস্ট করবেন?
আপনি কীভাবে কোনও আইফ্রেমে ডেটা পোস্ট করবেন?
উত্তর:
"পোস্ট ডেটা" দ্বারা আপনি কী বোঝাতে চান তা নির্ভর করে। আপনি target=""
কোনও <form />
ট্যাগে এইচটিএমএল বৈশিষ্ট্যটি ব্যবহার করতে পারেন , সুতরাং এটি এতটা সহজ হতে পারে:
<form action="do_stuff.aspx" method="post" target="my_iframe">
<input type="submit" value="Do Stuff!">
</form>
<!-- when the form is submitted, the server response will appear in this iframe -->
<iframe name="my_iframe" src="not_submitted_yet.aspx"></iframe>
যদি এটি না হয় বা আপনি আরও জটিল কিছু পরে চলেছেন তবে আরও বিস্তারিত অন্তর্ভুক্ত করতে দয়া করে আপনার প্রশ্নটি সম্পাদনা করুন।
সেখানে যে শুধুমাত্র ঘটে যখন আপনি পরিবর্তনশীল, আপনার অনুরোধকে তৈরি করছেন ইত্যাদি জাভাস্ক্রিপ্ট ব্যবহার ইন্টারনেট এক্সপ্লোরার সঙ্গে একটি পরিচিত বাগ সংশোধন করা হয় (একটি এর কাজ প্রায় এখানে ), কিন্তু আপনি সাধারণ HTML মার্কআপ করছি জরিমানা ব্যবহার করছেন, তাহলে আপনাকে। লক্ষ্য বৈশিষ্ট্য এবং ফ্রেমের নামগুলি কিছু চালাক নিনজা হ্যাক নয়; যদিও এটি এইচটিএমএল 4 স্ট্রাইক বা এক্সএইচটিএমএল 1 স্ট্রাইকটিতে অবহিত করা হয়েছে (এবং তাই এটি বৈধতা দেবে না), এটি ৩.২ থেকে এটি HTML এর অংশ হয়ে গেছে, এটি আনুষ্ঠানিকভাবে এইচটিএমএল 5 এর অংশ, এবং নেটস্কেপ 3-এর পরে এটি প্রায় প্রতিটি ব্রাউজারে কাজ করে।
আমি এই আচরণটি এক্সএইচটিএমএল 1 স্ট্রাইক্ট, এক্সএইচটিএমএল 1 ট্রানজিশনাল, এইচটিএমএল 4 স্ট্রাইক এবং "কুইর্কস মোডে" কোনও ডক্টইপিইপি নির্দিষ্ট না করে কাজ করে যাচাই করেছি এবং এটি ইন্টারনেট এক্সপ্লোরার 7.0.5730.13 ব্যবহার করে সমস্ত ক্ষেত্রে কাজ করে। আমার পরীক্ষার ক্ষেত্রে দুটি ফাইল রয়েছে, আইআইএস 6-তে ক্লাসিক এএসপি ব্যবহার করে; এগুলি এখানে পুরোপুরি পুনরুত্পাদন করা হয় যাতে আপনি নিজের জন্য এই আচরণটি যাচাই করতে পারেন।
default.asp
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Form Iframe Demo</title>
</head>
<body>
<form action="do_stuff.asp" method="post" target="my_frame">
<input type="text" name="someText" value="Some Text">
<input type="submit">
</form>
<iframe name="my_frame" src="do_stuff.asp">
</iframe>
</body>
</html>
do_stuff.asp
<%@Language="JScript"%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Form Iframe Demo</title>
</head>
<body>
<% if (Request.Form.Count) { %>
You typed: <%=Request.Form("someText").Item%>
<% } else { %>
(not submitted)
<% } %>
</body>
</html>
আমি এমন কোনও ব্রাউজার শুনতে খুব আগ্রহী হব যা এই উদাহরণগুলি সঠিকভাবে চালায় না।
target
এইচটিএমএলের জন্য বৈশিষ্ট্য হিসাবে সেট করা হয়েছে <form>
। ফর্মটি পোস্ট হওয়ার পরে এবং লক্ষ্যটি যদি আমি আইফ্রেমে দেখতে পাই তবে আমি এই লিখিত সামগ্রীটি কোনও ফাইলে সংরক্ষণ করতে একটি বিকল্প সরবরাহ করতে চাই। এই আমি জিজ্ঞাসা বোঝাতে চেয়েছিলেন। এর আরও স্বচ্ছতার প্রয়োজন হলে আমাকে জানান know
এইচটিএমএল পৃষ্ঠার ভিতরে অন্য ডকুমেন্ট এম্বেড করার জন্য একটি আইফ্রেমে ব্যবহার করা হয়।
ফর্ম পৃষ্ঠার মধ্যে যদি কোনও আইফ্রেমে ফর্মটি জমা দিতে হয়, তবে তা ট্যাগের টার্গেট অ্যাট্রিবিউটটি ব্যবহার করে সহজেই অ্যাকসিভ করা যায়।
Iframe ট্যাগের নামে ফর্মের টার্গেট অ্যাট্রিবিউট সেট করুন।
<form action="action" method="post" target="output_frame">
<!-- input elements here -->
</form>
<iframe name="output_frame" src="" id="output_frame" width="XX" height="YY">
</iframe>
উন্নত iframe টার্গেট ব্যবহার
এই সম্পত্তিটি অভিজ্ঞতার মতো একটি এজাক্স তৈরি করতেও ব্যবহৃত হতে পারে, বিশেষত ফাইল আপলোডের মতো ক্ষেত্রে, যেখানে ফাইলগুলি আপলোড করার জন্য ফর্মটি জমা দেওয়া বাধ্যতামূলক হয়ে যায়
Iframe 0 প্রস্থ এবং উচ্চতাতে সেট করা যেতে পারে, এবং iframe এ লক্ষ্য সেট করে ফর্মটি জমা দেওয়া যেতে পারে এবং ফর্ম জমা দেওয়ার আগে একটি লোডিং ডায়ালগ খোলা হয়। সুতরাং, এটি একটি এজ্যাক্স নিয়ন্ত্রণকে উপহাস করে কারণ নিয়ন্ত্রণটি এখনও ইনপুট ফর্ম জেএসপিতে থাকে, লোডিং ডায়ালগটি খোলে।
Exmaple
<script>
$( "#uploadDialog" ).dialog({ autoOpen: false, modal: true, closeOnEscape: false,
open: function(event, ui) { jQuery('.ui-dialog-titlebar-close').hide(); } });
function startUpload()
{
$("#uploadDialog").dialog("open");
}
function stopUpload()
{
$("#uploadDialog").dialog("close");
}
</script>
<div id="uploadDialog" title="Please Wait!!!">
<center>
<img src="/imagePath/loading.gif" width="100" height="100"/>
<br/>
Loading Details...
</center>
</div>
<FORM ENCTYPE="multipart/form-data" ACTION="Action" METHOD="POST" target="upload_target" onsubmit="startUpload()">
<!-- input file elements here-->
</FORM>
<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;" onload="stopUpload()">
</iframe>
এই ফাংশনটি একটি অস্থায়ী ফর্ম তৈরি করে, তারপরে jQuery ব্যবহার করে ডেটা প্রেরণ করুন:
function postToIframe(data,url,target){
$('body').append('<form action="'+url+'" method="post" target="'+target+'" id="postToIframe"></form>');
$.each(data,function(n,v){
$('#postToIframe').append('<input type="hidden" name="'+n+'" value="'+v+'" />');
});
$('#postToIframe').submit().remove();
}
লক্ষ্যটি হ'ল আইফ্রেমের 'নাম' অ্যাটর এবং ডেটা একটি জেএস অবজেক্ট:
data={last_name:'Smith',first_name:'John'}
আপনি যদি কোনও আইফ্রেমে ইনপুট পরিবর্তন করতে চান তবে সেই আইফ্রেমে ফর্মটি জমা দিন, এটি করুন
...
var el = document.getElementById('targetFrame');
var doc, frame_win = getIframeWindow(el); // getIframeWindow is defined below
if (frame_win) {
doc = (window.contentDocument || window.document);
}
if (doc) {
doc.forms[0].someInputName.value = someValue;
...
doc.forms[0].submit();
}
...
সাধারণত, আপনি কেবল তখনই এটি করতে পারেন যদি ইফ্রামের পৃষ্ঠাটি একই উত্স থেকে আসে তবে একই উত্স নীতি উপেক্ষা করতে এবং কোনও পৃষ্ঠাতে এটি পরীক্ষা করতে আপনি কোনও ডিবাগ মোডে Chrome শুরু করতে পারেন।
function getIframeWindow(iframe_object) {
var doc;
if (iframe_object.contentWindow) {
return iframe_object.contentWindow;
}
if (iframe_object.window) {
return iframe_object.window;
}
if (!doc && iframe_object.contentDocument) {
doc = iframe_object.contentDocument;
}
if (!doc && iframe_object.document) {
doc = iframe_object.document;
}
if (doc && doc.defaultView) {
return doc.defaultView;
}
if (doc && doc.parentWindow) {
return doc.parentWindow;
}
return undefined;
}