我在使用 polymer core-ajax 发送表单结果时遇到问题 - 不执行吗?
I'm having issues sending form results using polymer core-ajax - go not executing?
我在 Polymer 中有以下元素
<link rel="import" href="elements.html" />
<polymer-element name="Map-Add">
<template>
<form is="ajax-form" id="addRoutingMap">
<paper-action-dialog backdrop autoclosedisabled heading="Create Map" id="dlgAddMap">
<p><paper-input label="Name" floatinglabel style="width:300px;" id="lblNewMapName" value="{{item.mapName}}"></paper-input></p>
<paper-button affirmative style="color:#000;">Decline</paper-button>
<paper-button affirmative autofocus style="color:#0094ff;" id="btnAcceptAddMap" on-tap="{{doSend}}">Accept</paper-button>
</paper-action-dialog>
</form>
<core-ajax id="ajax"
method="POST"
url="/RoutingMapAddHandler.php"
params="{{item}}"
on-core-response="{{handleReponse}}" on-core-error="{{handleError}}"></core-ajax>
</template>
<script>
Polymer('Map-Add', {
/****************************************
created: element initialisation
***************************************/
created: function () {
this.item = {};
},
/****************************************
show: shows the dialog
***************************************/
show: function () {
this.$.dlgAddMap.toggle();
},
/****************************************
doSend: Sends data to the Routing Map Handler
***************************************/
doSend: function (event, detail, sender) {
try {
this.$.ajax.go();
}
catch (e) {
alert(e.message());
}
alert('finished calling handler!');
},
/****************************************
handleError: Handle error from core-ajax
***************************************/
handleError: function (event, detail, sender) {
alert('Whoops!');
},
/****************************************
handleResponse: Handle Response from core-ajax
***************************************/
handleReponse: function (event, detail, sender) {
alert('Yippee!!');
}
});
</script>
</polymer-element>
虽然我可以看到正在调用 doSend,但 core-ajax 有一个值。但是 Url 似乎没有被调用。也不会触发 on-core-response 或 on-core-error 事件。
RoutingMapAddHandler.php就是下面的PHP代码。它与使用此元素的页面和托管页面位于同一目录中。
<?php
require_once 'RoutingMaps.php';
$routing = new RoutingMaps();
$routing->route_name = $_POST['mapName'];
$res = $routing->Add();
echo $res;
所以我真的有两个问题。
为什么PHP没有被调用。
为什么核心响应和核心错误事件都没有被触发?
好的,又是荷马辛普森的时刻 - 错过了核心-ajax 导入。将以下行添加到 elements.html 并进行 ajax 调用。
<link rel="import"
href="bower_components/core-ajax/core-ajax.html" />
我在 Polymer 中有以下元素
<link rel="import" href="elements.html" />
<polymer-element name="Map-Add">
<template>
<form is="ajax-form" id="addRoutingMap">
<paper-action-dialog backdrop autoclosedisabled heading="Create Map" id="dlgAddMap">
<p><paper-input label="Name" floatinglabel style="width:300px;" id="lblNewMapName" value="{{item.mapName}}"></paper-input></p>
<paper-button affirmative style="color:#000;">Decline</paper-button>
<paper-button affirmative autofocus style="color:#0094ff;" id="btnAcceptAddMap" on-tap="{{doSend}}">Accept</paper-button>
</paper-action-dialog>
</form>
<core-ajax id="ajax"
method="POST"
url="/RoutingMapAddHandler.php"
params="{{item}}"
on-core-response="{{handleReponse}}" on-core-error="{{handleError}}"></core-ajax>
</template>
<script>
Polymer('Map-Add', {
/****************************************
created: element initialisation
***************************************/
created: function () {
this.item = {};
},
/****************************************
show: shows the dialog
***************************************/
show: function () {
this.$.dlgAddMap.toggle();
},
/****************************************
doSend: Sends data to the Routing Map Handler
***************************************/
doSend: function (event, detail, sender) {
try {
this.$.ajax.go();
}
catch (e) {
alert(e.message());
}
alert('finished calling handler!');
},
/****************************************
handleError: Handle error from core-ajax
***************************************/
handleError: function (event, detail, sender) {
alert('Whoops!');
},
/****************************************
handleResponse: Handle Response from core-ajax
***************************************/
handleReponse: function (event, detail, sender) {
alert('Yippee!!');
}
});
</script>
</polymer-element>
虽然我可以看到正在调用 doSend,但 core-ajax 有一个值。但是 Url 似乎没有被调用。也不会触发 on-core-response 或 on-core-error 事件。
RoutingMapAddHandler.php就是下面的PHP代码。它与使用此元素的页面和托管页面位于同一目录中。
<?php
require_once 'RoutingMaps.php';
$routing = new RoutingMaps();
$routing->route_name = $_POST['mapName'];
$res = $routing->Add();
echo $res;
所以我真的有两个问题。
为什么PHP没有被调用。
为什么核心响应和核心错误事件都没有被触发?
好的,又是荷马辛普森的时刻 - 错过了核心-ajax 导入。将以下行添加到 elements.html 并进行 ajax 调用。
<link rel="import"
href="bower_components/core-ajax/core-ajax.html" />